Apprendre Linux : Aller plus loin avec la commande find

Sous Linux, si vous cherchez un fichier ou un répertoire l'administrateur utilise la commande find. Cette commande, puissante, permet de chercher des fichiers avec de nombreux critères :
  • type de fichier,
  • nom,
  • taille,
  • permission,
  • propriétaires
  • date de modifications.
Chacun de ces critères peut être combiné par des ou ou des et .

Utilisation basique

Trouver un fichier dans un dossier à partir de son nom
find /dossier/ou/chercher -name "nom du fichier"
Dans l'exemple suivant, la commande find cherche les fichiers dont l'extension est mp4 à partir de la home directory de l'utilisateur
find ~ -name "*.mp4"
Nous voyons donc qu'il est possible de mette *  dans le nom du fichier afin de faire des recherches génériques.

Trouver et lister les gros fichiers, dont la taille est supérieur à 1GO

find . -size +1G -exec ls -lh "{}" \;

Trouver et lister les répertoire vides :

find . -type d -empty
Il est également possible de combiner les arguments de la commande find pour effectuer une action sur le ou les fichiers trouvés. Cette opération se fait via la commande -exec, comme nous l'avons vu avec l'exemple sur les fichier dont la taille est supérieur à 1GO. Aussi, la commande ci-dessous supprime les fichiers dont la taill est supérieure à 3 GO :
find . -size +3G -exec rm {} \;

Supprimer des fichiers en fonction de leur date de dernière modification

find /var/log -name "daemon.log*" -mtime +14 -exec rm {} \;
A noter toutefois que cette commande find peut-être particulièrement coûteuse lorsqu'il est nécessaire de scanner toute l'arborescence.

Lister le top 10 des gros fichiers dans un répertoire :

find . -type f -exec  ls -s {} \; |  sort -n -r |  head -10
Il est possible d'ajouter l'option -xdev. En effet, cette option permet de ne pas franchir les limites du système de fichiers. Bien pratique si vous faites un find sur /. En effet, si il existe une partition /home par exemple , find n'ira pas dedans avec l'option -xdev mais restera dans le système de fichiers courants.

Nicolas Housset

Passionné d'informatique, je suis Consultant et expert technique SAS VIYA, également co-fondateur de la société Flexcelite. Spécialisé dans les technologies SAS (Viya, 9.4) et les infrastructures associées (Linux, Hadoop, Azure), ce blog est mon espace pour partager mes mémos techniques et retours d'expérience.