Comment faire : Mode console, scripts BASH, SH...
 Charge moyenne sur 1mn : 0.21 Charge moyenne sur 5mn : 0.25 Charge moyenne sur 15mn : 0.33




Utiliser FIND pour retrouver un fichier

La commande find permet de retrouver des fichiers à partir de certains critères.

Informations

Dates
  • Publication : 2010
  • Modification : Jeudi 08 septembre 2011

Partager

La syntaxe est la suivante :

001 find  

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.

On peut combiner les critères avec des opérateurs logiques :

  • critère1 critère2 ou critère1 -a critère2 correspond au et logique,
  • !critère non logique,
  • (critère1 -o critère2) ou logique,

La commande find doit être utilisé avec l'option -print. Sans l'utilisation de cette option, même en cas de réussite dans la recherche, find n'affiche rien à la sortie standard (l'écran, plus précisément le shell).

La commande find est récursive, c'est à dire où que vous tapiez, il va aller scruter dans les répertoires, et les sous répertoires qu'il contient, et ainsi de suite.

Recherche par nom de fichier

Pour chercher un fichier dont le nom contient la chaîne de caractères toto à partir du répertoire /usr, vous devez tapez :

001 find /usr -name toto -print

Pour rechercher tous les fichiers se terminant par .c dans le répertoire /usr, vous taperez :

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

Recherche suivant la date de dernière modification

Pour connaître les derniers fichiers modifiés dans les 2 derniers jours dans toute l'arborescence (/), vous devez taper :

001 find / -mtime 2 -print

Recherche suivant la taille

Pour connaître dans toute l'arborescence, les fichiers dont la taille dépasse 1Mo (2000 blocs de 512Ko), vous devez taper :

001 find / -size 2000 -print
002 # ici file + 100mg
003 find / -size +100000k -exec ls -lh {} ; | awk '{ print $9 ":" $5 }' 1> /tmp/large-files.log | cat /tmp/large-files.log

Recherche combinée

Vous pouvez chercher dans toute l'arborescence (/), les fichiers ordinaires (-f) appartenant de l'utilsateur ksso0s, dont la permission est fixée à 755, on obtient :

001 find / -type f -user ksso0s -perm 755 -print

Si vous voulez connaître les fichiers n'appartenant pas à l'utilisateur ksso0s, vous taperez :

001 find . ! -user ksso0s -print

! -user ksso0s, est la négation de -user ksso0s, c'est à dire, tous les utilisateurs sauf ksso0s. Recherche des fichiers qui ont pour nom a.out et des fichiers se terminant par .c. On tape :

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

On recherche donc les fichiers dont le nom est a.out ou les fichiers se terminant par *.c, une condition ou l'autre. Recherche des fichiers qui obéissent à la fois à la condition a pour nom core et à la condition a une taille supérieure à 1Mo.

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

Les commandes en option

L'option -print est une commande que l'on passe à find pour afficher les résultats à la sortie standard. En dehors de print, on dispose de l'option -exec. find couplé avec exec permet d'exécuter une commande sur les fichiers trouvés d'après les critères de recherche fixés. Cette option attend comme argument une commande, celle ci doit être suivi de {} ; Exemple recherche des fichiers ayant pour nom core, suivi de l'effacement de ces fichiers.

001 find . -name core -exec rm {} ;

Tous les fichiers ayant pour nom core seront détruits, pour avoir une demande de confirmation avant l'exécution de rm, vous pouvez remplacer -exec par -ok :

001 find . -name core -ok rm {}  ;

Autres subtilités

Une fonction intéressante de find est de pouvoir être utilisé avec d'autres commandes UNIX. Par exemple:

001 find . -type f -print | xargs grep toto

En tapant cette commande vous allez rechercher dans le répertoire courant tous les fichiers normaux (sans les répertoires, fichiers spéciaux), et rechercher dans ces fichiers tous ceux contenant la chaîne toto.

Liens connexes :


LAB3W.ORJ Alias de O.Romain JAILLET-RAMEY (NOTIF LVL 7 - 41 ans) LAB3W.ORJ
CONTACT
- Web - STEAM - Monster - LinkedIn - Viadeo - DailyMotion - FB - G+ - Twitter
DROITS SITES : ZW3B.Admin
INSCRIPTION : à l'aube du site, le samedi 06 janvier 1 (depuis wWwEBALL.com) (2001/01/06 15:31)
CONNEXION : hier à 14h33 (2018/01/15 14:33)
DERNIERE VISITE : hier à 15h24 (2018/01/15 15:24)

les réactions des ZW3B.Nautes (0 note)

Ajouter un commentaire

Avatar par default
Pseudo :
Email :
 
Ajouter la chaine de caractères (le code) ci-dessous dans le champ du dessous.
Captcha
Code :





Valid XHTML 1.0 Strict CSS Valide !

ipv6 ready