Commande find :

find /chemin/de/recherche options  motif.de.recherche

Commande de base :

find / -name "motif.de.recherche"
=> Il y a la possibilité de mettre des caractères jokers [*?]

Recherche insensible à la case :

find / -iname "motif.de.recherche"

Recherche qui ne correspond pas au motif

find /etc -not -name "issue"

Limitation de la profondeur de recherche :

find / -maxdepth 3 -name passwd
=> On descend à 3 profondeur de dossiers

find / -mindepth 4 -maxdepth 5 -name passwd
=> on limite la recherche à une profondeur comprise entre 4 et 5

Execution de commande sur les résultats trouvés :

find / -iname "issue" -exec ls -alZ {} \;
find /tmp -iname "toto" -exec cp {} {}.backup \;

Suppression

find /tmp -name core -type f -print | xargs /bin/rm
find / -name "*.log" -delete
find . -name "*.log" -exec rm -rf {} \;

Affiche le type de fichier, le nom et l'inode :

find /tmp -printf "%y %i %prn\n"

Recherche basée sur un inode :

find / -inum 12589335

Recherche basée sur une permission de fichier :

find / -perm -g=r -type f -exec ls -l {} \;
=> Affiche tous les fichiers (-type f) avec la permission read au groupe (-g=r)
permissions : u=user, g=groupe, o=other
types : f=file, d=directory, s=socket, l =symbolic  link, b=block, c=character, p=named pipe (FIFO)

find / -perm 444 -type f -exec ls -l {} \;
=> affiche les fichiers ayant une permission 444

find / -perm -444 -type f -exec ls -l {} \;
=> affiche les fichiers ayant au moins une permission 444

find / -perm -4000
=> affiche les fichiers avec SUID

- Recherche des fichiers vides :

find / -empty

Recherche des fichiers non vides :

find . -not -empty -name ".*"

Recherche lien symbolique :

find /tmp  -lname "*"

Recherche du top 5 des gros fichiers :

find /tmp -type f -exec ls -s {} \; | sort -n -r | head -5

Recherche par taille :

find / -type f -size 7M
=> affiche les fichiers de 7.XX Mo, il est possible d'utiliser +/-
'b' for 512-byte blocks (this is the default if no suffix is used)
'c' for bytes
'w' for two-byte words
'k' for Kilobytes (units of 1024 bytes)
'M' for Megabytes (units of 1048576 bytes)
'G' for Gigabytes (units of 1073741824 bytes)

Recherche basée sur la date :

find / -mmin -60
=> affiche les fichiers modifier dans les 60 dernières minutes
-mmin N : dernières modifications en N minutes
-mtime N : dernières modifications en N jours
-amin N : deniers accès en N minutes
-atime N : derniers accès en N jours
-cmin N : fichiers avec le status changement en N minutes (inode change).
-ctime N : fichiers avec le status changement en N jours (inode change).
avec N=N minutes/jours, -N= moins de N minutes/jours, +N= plus de N minutes/jours

Recherche basée sur la date d'un fichier de référence :

find /var -newer /etc/passwd
=> fichier modifié après la date de modification de /etc/passwd
-anewer : accédé et -cnewer : changé (inode change)

Recherche des fichiers cachés :

find / -regex ".*/\..*"

Recherche sur un montage :

find / -xdev -iname "toto"
=> on limite la recherche aux dossiers/fichiers dans le point de montage /

Rechercher et renommer les fichiers sans les espace

find /tmp -type f -iname "* *" -exec  bash -c 'mv -i "$1"  "${1// /_}" ' '{}' '{}' \;

Recherche de fichier avec le même inode :

find /etc -samefile /etc/issue
=> ajouter l'option -L qui incluera les liens symboliques.

Recherche par propriétaire :

find / -user apache

Recherche des fichiers executables :

find /tmp -type f -executable