Files
mkdocs/docs/Linux/find.md
2020-01-25 06:47:22 +01:00

3.5 KiB

find

La commande find permet de retrouver des fichiers à partir de certains critères. Elle doit être utilisé avec l'option -print

Les critères de recherche sont les suivants :

  • -name recherche sur le nom du fichier,
  • -perm recherche sur les droits d'accès du fichier,
  • -links recherche sur le nombre de liens du fichier,
  • -user recherche sur le propriétaire du fichier,
  • -group recherche sur le groupe auquel appartient le fichier,
  • -type recherche sur le type (d=répertoire, c=caractère, f=fichier normal),
  • -size recherche sur la taille du fichier en nombre de blocs (1 bloc=512octets),
  • -atime recherche par date de dernier accès en lecture du fichier,
  • -mtime recherche par date de dernière modification du fichier,
  • -ctime recherche par date de création du fichier.

Options:

Recherche par nom de fichier:

find /usr -name toto -print

find /usr -name " *.c " -print

# commence par un a ou A, suivi de quelque chose, et se termine par un chiffre compris entre 3 et 6

find . -name '[aA]*[3-6]' -print

Recherche suivant la date de dernière modification:

# modifiés il y a 30 jours

find / -mtime 30 -print

# modifiés il y a 30 jours ou plus

find / -mtime +30 -print

# modifiés il y a 30 jours ou moins

find / -mtime 30 -print
find . -mtime +0 # find files modified greater than 24 hours ago
find . -mtime 0 # find files modified between now and 1 day ago (i.e., in the past 24 hours only)
find . -mtime -1 # find files modified less than 1 day ago (SAME AS -mtime 0)
find . -mtime 1 # find files modified between 24 and 48 hours ago
find . -mtime +1 # find files modified more than 48 hours ago

Rechercher le plus vieux fichier:

find / -type f -printf '%T+ %p\n' | sort | head -n 1

Recherche suivant la taille:

# fichiers dont la taille dépasse 30ko

find / -size +30k -print

Recherche en utilisant les opérateurs logiques:

# les fichiers n'appartenant pas à l'utilisateur olivierles fichiers n'appartenant pas à l'utilisateur olivier

find . ! -user olivier -print

# Recherche les fichiers dont le nom est a.out ou les fichiers se terminant par *.c (une condition OU l'autre).

find . \  ( -name a.out -o -name " *.c " \  ) -print

# Recherche des fichiers dont le nom est core et d'une taille supérieure à 1Mo (une condition ET l'autre).

find . \  (-name core -a size +2000 \  ) -print

Recherche combinée:

# les fichiers de l'utilisateur bruno dont les permissions sont 755

find / -type f -user bruno -perm 755 -print

Recherche avec regex:

# les images avec extentions jpg|gif|png|jpeg dans le dossier Users
# -E => macOS only ??

find -E /Users/bruno -regex ".*\.(jpg|gif|png|jpeg)"

# non case-sensitive
find -E /Users/bruno -iregex ".*\.(jpg|gif|png|jpeg)"

Commandes en option:

# Recherche les fichiers toto et les efface.

find . -name toto -exec rm {}\   ;

# Pour avoir une demande de confirmation avant l'exécution de rm

find . -name toto -ok rm {}\   ;

Utilisation avec d'autres commandes:'

# Recherche les fichiers normaux dans le répertoire courant, puis chercher le chaine toto dans ces fichiers.

find . -type f -print | xargs grep toto

# Recherche les fichiers toto et les efface après confimation (-p).
# idem -exec, " | xargs " ne crée qu'un seim processus.

find . -name toto  | xargs -p rm

Redirection des messages d'erreur:

find / -name toto -print 2>/dev/null