Comment trouver un fichier par son nom sous Linux depuis le terminal
Avec find et locate, et quand utiliser chacun.
find / -iname "*rapport*" 2>/dev/null
-iname cherche sans distinguer majuscules et
minuscules (plus flexible que -name). Le
2>/dev/null masque les avertissements « permission
refusée » dans les dossiers système auxquels vous n'avez pas accès,
ne laissant que les résultats utiles.
Plus rapide pour un usage quotidien : locate
sudo apt install mlocate
sudo updatedb
locate rapport
locate est bien plus rapide que find
car il consulte un index déjà construit, au lieu de parcourir le
disque sur le moment — mais pour cette même raison, il ne trouve pas
les fichiers créés après la dernière mise à jour de cet index (avec
updatedb, qui s'exécute automatiquement chaque jour).
Conseil : utilisez find si vous avez
besoin de résultats garantis à l'instant (y compris des fichiers créés
il y a une minute) ; utilisez locate pour des recherches
rapides du quotidien où peu importe que l'index ait quelques heures.
Questions fréquentes
Pourquoi locate ne trouve-t-il pas un fichier que je viens de créer ?
Parce que locate consulte un index qui se met à jour périodiquement (généralement une fois par jour), pas en temps réel. Exécutez 'sudo updatedb' manuellement pour forcer une mise à jour immédiate.
Pourquoi find affiche-t-il autant d'erreurs « permission refusée » ?
Parce qu'il essaie de chercher dans des dossiers système auxquels votre utilisateur n'a pas accès. Ajouter '2>/dev/null' à la fin de la commande masque ces avertissements, ne laissant que les résultats utiles.