Afficher tous les fichiers contenu dans le répertoire courant (en donnant les chemin relatif au répertoire courant)

Recherche de fichier avec find

Par faignantise, on utilise des fois ceci pour cherche un fichier qui contient bateau dans son nom. Ça a l’avantage d’être très explicite mais nous nous retrouvons parfois avec des répertoire qui comportent aussi « bateau ».

find /var/log | grep "bateau"

Voici quelque chose de plus élégant :

find -name *bateau*

Ou tous les fichier qui finissent par .log

find -name *.log

Rechercher un contenu

Recherche tous les fichiers qui contienne l’expression « bateau »

grep "bateau" -r *

Voici des options très utiles :

  • -i pour être insensible à la case
  • -a pour cherche dans les fichiers binaires
  • -n pour afficher le nom du fichier avec son numéro de ligne
  • -c pour afficher le nombre d’occurance dans le fichier
  • -o n’affiche que l’occurance trouvée
grep  -rino "bateau" *

Combinons les deux recherche

Cherche l’expression bateau dans les fichiers qui se termine par .log

find -name *.log -exec grep -ino "bateau" {} \;

Pas à suivre, vous perdez le nom du fichier, préférez l'outil grep seul.

Vous l’aurez compris, vous pouvez utiliser cela pour supprimer par exemple des fichiers qui correspondent à une recherche. Par exemple, supprimer les fichier qui commence par toto dans le répertoire /tmp :

find /tmp -name toto* -exec rm {} \;