Dominique Meeùs
Dernière modification le   
retour à la table des matières — à l’index — à ma page de départ

Rechercher des fichiers dans une arborescence
(find ou locate, aussi fdupes)

Up: Rechercher des fichiers ou des fragments de texte dans des fichiers ou les lire Previous: Lister les fichiers d’un ou plusieurs répertoires (ls ou find -printf) Next: Rechercher du texte ou une expression régulière dans une ligne (grep)

La commande find a plein d’options pour rechercher des fichiers. Un exemple simple est

find /chemin -name "fich*"

qui cherche les fichiers de nom correspondant dans le répertoire indiqué et dans ses sous-répertoires. (Les guillemets sont essentiels si on veut trouver des fichiers dont le nom contient le segment fich, y compris dans un nom de fichier en plusieurs mots.) La commande distingue les majuscules des minuscules. Sinon, il faut utiliser plutôt -iname. La mention du chemin est obligatoire. Pour chercher à partir du dossier courant, on peut mettre là un point comme dans l’exemple ci-dessous.

On pourrait chercher aussi les fichiers des dernier jours, ou les fichiers plus récents qu’un fichier donné. Comme on peut aussi prendre la négation d’une condition, cela donne le moyen de chercher des fichiers plus anciens que le fichier donné :

find . ! -newer thisfile

où ici le chemin de départ de la recherche est dossier courant.

La commande locate fich* cherche dans une base de données (pas un chemin). Cette base de données doit être à jour (commande updatedb). Certaines distributions remplacent locate par slocate.

Après des années, on peut avoir réorganisé la hiérarchie de ses dossiers et on peut avoir hésité sur la bonne localisation pour un fichier, d’où la possibilité d’avoir des fichiers en double. La commande fdupes (à installer par sudo apt install fdupes) détecte les doubles : ~$ fdupes -rAn . recherche tous les doublons de dossier personnel. (Avec -r pour récursif, -A exclut les fichiers cachés, -n exclut les fichiers vides.) Si on est conservateur, on peut avoir beaucoup plus de doublons qu’on ne l’imagine. Il est bon d’abord d’éviter les fichiers cachés (surtout les répertoires cachés genre ./local). On pourrait préférer ensuite faire un premier nettoyage un dossier à la fois : fdupes -r thisfolder.

Up: Rechercher des fichiers ou des fragments de texte dans des fichiers ou les lire Previous: Lister les fichiers d’un ou plusieurs répertoires (ls ou find -printf) Next: Rechercher du texte ou une expression régulière dans une ligne (grep)