Wolfzone

 Le blog d'un loup pas vraiment solitaire

Rédigé par YannG | 14 décembre 2017 | Classé dans: Linux | Mots clés: console

Rechercher Des Fichiers Avec "Find"

La solution la plus simple pour rechercher des fichiers dans l'arborescence du système de fichiers au moyen de la ligne de commande est d'utiliser find.

La commande find permet de rechercher des fichiers dans le ou les dossiers indiqués ainsi que dans tout les sous-dossiers contenus dans ceux-ci. Divers traitements peuvent être appliqués aux résultats de cette commande allant du simple affichage, à l'effacement ou encore d'un traitement personnalisé de la liste des fichiers correspondants.

Format de la commande:

find [chemins] [arguments]

Les chemins:

Par défaut, si aucun chemin n'est spécifié, la commande find recherche des fichiers dans le dossier en cours d'utilisation.

  • Le point . indique le dossier en cours,
  • Deux points .. indiquent de revenir en arrière dans l'arborescence en faisant référence au dossier précédent,
  • La barre oblique à droite / indique la racine de l'arborescence ou une séparation entre les différents dossiers,
  • Le tilde ~ fait référence à la racine du dossier de l'utilisateur.

Les noms de fichiers:

Les noms de fichiers à rechercher peuvent être spécifiés au moyen de divers motifs, dont par exemple:

  • texte va rechercher des fichiers dont le nom correspond exactement à "texte",
  • *texte va rechercher des fichiers dont le nom se termine avec "texte",
  • texte* va rechercher des fichiers dont le nom commence avec "texte",
  • *texte* va rechercher des fichiers dont le nom contient "texte".

Les arguments:

  • -empty le résultat de la recherche doit être vide, fichier à zéro ou dossier sans aucun fichier.
  • -exec exécute la commande spécifiée pour chacun des résultats de la recherche.
  • -iname recherche un nom de fichier sans tenir compte des majuscules/minuscules
  • -maxdepth n recherche dans n niveaux de sous-dossiers. La valeur 1 désactive la recherche récursive.
  • -name recherche un nom de fichier en tenant compte des majuscules/minuscules
  • -not inverser le résultat de la recherche, ce qui est vrai devient faux et ce qui est faux devient vrai.
  • -or effectuer un choix conditionnel entre l'une ou l'autre de deux valeurs.
  • -type type de fichier à rechercher spécifiquement, f pour un fichier standard, d pour un dossier.

Quelques exemples:

  • Rechercher des fichiers et des dossiers dans le dossier courant et tout ses sous-dossiers:
    find -name texte_a_chercher
    ou:
    find . -name texte_a_chercher
  • Rechercher des fichiers et des dossiers dans le dossier précédent seulement:
    find .. -maxdepth 1 -name texte_a_chercher
  • Rechercher les fichiers mp3 dans le dossier Musique de l'utilisateur:
    find ~/Musique -type f -iname "*.mp3"
  • Rechercher des fichiers ou des dossiers à partir du dossier Musique de l'utilisateur qui contiendrait le terme metal dans leur nom:
    find ~/Musique -iname "*metal*"
  • Rechercher des fichiers avi ou mp4 à partir du dossier Videos de l'utilisateur qui contiendrait le terme star dans leur nom:
    find ~/Videos -type f -iname "*star*.avi*" -or -iname "*star*.mp4*"
  • Rechercher tout les fichiers dans le dossier Images de l'utilisateur avec l'extension jpeg et les renommer en jpg:
    find ~/Images -type f -iname "*.jpeg" -exec bash -c 'mv "$0" "${0%.jpeg}.jpg"' {} \;
  • Rechercher tout les fichiers de sauvegarde dans le dossier Documents de l'utilisateur avec l'extension txt~ et les effacer:
    find ~/Documents -type f -iname "*.txt~" -exec rm -f {} \;

    NOTE: Gardez à l'esprit que la commande rm est définitive, donc veillez à sélectionner soigneusement les dossiers dans lesquels vous voulez effacer des fichiers ou des dossiers.

  • Remplacer tout les espaces contenus dans tout les fichiers et les dossiers à partir du dossier Documents de l'utilisateur par le caractère _:
    find ~/Documents -iname "* *" -exec bash -c 'mv "$0" "${0// /_}"' {} \;

Cet article est seulement un aperçu des possibilités de la commande find, et il vaut mieux se référer à la page du manuel pour en explorer toutes les subtilités.