31 Jan 2022, 00:00

Notes sur find

Share

Suivre les liens symboliques

Par défaut, find voit les liens symboliques comme des fichiers. Pour qu’il considère la cible du lien et non le lien lui-même, il faut utiliser find -L.

Éxécuter une ou plusieurs commandes sur les résultats

-exec echo {} \; pour une commande (ici echo)
-exec echo {} \; -exec touch {} \; - exec cat {} \; pour plusieurs commandes.

Trouver des dates de modification dans le futur

Si une arborescence contient des fichiers dont la date de modification est dans le futur, on peut utiliser -mmin -0,01 pour trouver les fichiers dont la date de modification est plus récente que 0,01 minutes (soit moins d’une seconde) :
find ./ -mmin -0,01

On peut modifier cette date avec touch (avec -exec)

Trouver les liens symboliques

Source

find ./ -type l

Trouver les liens durs

Source

find -type f -links +1 pour lister les fichiers dont les inodes sont référencés plus d’une fois (ces autres références peuvent être en dehors du répertoire dans lequel est lancé find) . Pour ensuite voir les différents fichiers qui référencent le même inode qu’un fichier précis, on peut faire find -samefile ./my-file.

Trouver les dossiers vides

find ./ -type d -empty
find /path/to/data/ -type d -empty -print -delete pour les supprimer

Classer par date

find ./ -iname "*" -printf "%T+\t%p\n" | sort

On peut rajouter awk '{print $2}' pour ne pas afficher la date.