<p><p><p><p><p>Configuration des serveurs NT – TSE sur site</p></p></p></p></p>

1. Nom

find - Rechercher des fichiers dans une hiérarchie de répertoires.

2. description

find parcourt les arborescences de répertoires commençant en chacun des chemins mentionnés, en évaluant les expressions fournies pour chaque fichier rencontré.

3. Expressions

L'expression est constituée d'options (affectant l'ensemble des opérations plutôt que le traitement d'un fichier particulier, et renvoyant toujours vrai), de tests (renvoyant une valeur vraie ou fausse), et d'actions (ayant des effets de bords et renvoyant une valeur vraie ou fausse), tous ces éléments étant séparés par des opérateurs.

Quand un opérateur est manquant, l'opération par défaut -and est appliquée. Si l'expression ne contient pas d'action autre que -prune, find applique l'action -print par défaut sur tous les fichiers pour lesquels l'expression est vraie.

4. Options

L'expression est constituée d'options (affectant l'ensemble des opérations plutôt que le traitement d'un fichier particulier, et renvoyant toujours vrai), de tests (renvoyant une valeur vraie ou fausse), et d'actions (ayant des effets de bords et renvoyant une valeur vraie ou fausse), tous ces éléments étant séparés par des opérateurs.

Les options principales du find :

-xdev : ne pas parcourir les répertoires situés sur d'autres systèmes de fichiers. Cette option est très intéressante pour rechercher sur un file system.

5. Tests

Les arguments numériques peuvent être indiqués comme suit:

+n : supérieur à n,

-n : inférieur à n,

n : égal à n.

-atime n : dernier accès au fichier exactement n jours auparavant. Exemple : -atime -2 Ayant subi un accès depuis avant-hier

-ctime n : derniere modification du statut du fichier il y a n*24 heures.

-mtime n : fichier modifié exactement n jours auparavant. Exemple : -mtime +7  Inchangés depuis 7 jours au moins  

-name motif : Fichier dont le nom de base (sans les répertoires du chemin d'accès), correspond au motif du shell. Les méta-caractères (`*', `?', et `[]') ne sont jamais mis en correspondance avec un point `.' au début du nom. Pour ignorer un répertoire, ainsi que tous ses sous-répertoires, utiliser l'option -prune; vous trouverez un exemple dans la description de l'option -path.

-perm mode : Fichier dont les autorisations d'accès sont fixées exactement au mode indiqué (en notation symbolique ou octale). La notation symbolique utilise le mode 0 comme point de départ.

-perm -mode : Fichier ayant au moins toutes les autorisations indiquées dans le mode.

-perm +mode : Fichier ayant certaines des autorisations indiquées dans le mode.

-size n[bckw] : Fichier utilisant n unités d'espace. Les unités sont des blocs de 512 octets par défaut (ou si un suffixe `b' suit le nombre n), des octets si un suffixe `c' suit n, des kilo-octets si un suffixe `k' est utilisé, ou des mots de 2 octets si un `w' suit le nombre n. La taille ne prend pas en compte les blocs indirects, mais elle comptabilise les blocs des fichiers éparpillés pas encore alloués. Exemple :  -size +100 De taille supérieur à 50K ( +1000 > 500ko +2000 > 1MO)

-type c

Fichier du type c:

b : fichier spécial en mode bloc (avec buffer)

c : fichier spécial en mode caractère (sans buffer)

d : répertoire

p : tube nommé (FIFO)

f : fichier régulier

l : liens symbolique

s : socket

-user utilisateur : fichier appartenant à l'utilisateur indiqué (UID numérique éventuellement)

6. Actions

-exec commande ; : Exécute la commande; vrai si le code de retour 0 est renvoyé. Tous les arguments suivants de find sont considérés comme des arguments pour la ligne de commande, jusqu'à ce qu'on rencontre un `;'. La chaîne `{}' est remplacée par le nom du fichier en cours de traitement, et ceci dans toutes ses occurences, pas seulement aux endroits où elle est isolée, comme c'est le cas avec d'autres versions de find. Ces deux chaînes peuvent avoir besoin d'être protégées du développement de la ligne de commande par le shell, en utilisant le caractère d'échappement (`\') ou une protection par des apostrophes. La commande est exécutée depuis le répertoire de départ.

-ok commande ; : comme -exec mais interroge d'abord l'utilisateur (en utilisant l'entrée standard). Si la réponse ne commence pas par `y' ou `Y', la commande n'est pas exécutée, et le test devient faux.


7. exemples

Tout ces exemples ont été réalisés sur un serveur AIX et non linux ...

#df -k

Syst. fichiers     Blocs 1024    Libre %Util    Iutil %Iutil Monté sur

/dev/hd4                24576      9276   63%     1455    24% /

/dev/hd2               303104    63716   79%    11370    16% /usr

/dev/hd9var            176128    164312    7%      289     1% /var

/dev/hd3                16384    15748    4%       40     1% /tmp

/dev/hd1                24576    23408    5%       87     2% /home

/dev/lv07               16384      3668   78%      497    13% /outil

Soit le répertoire /tmp avec les fichiers suivants :

#ls -ltr

total 56

drwx------   2 root     system       512 19 fév 1997  lost+found

drwxrwxr-x   8 root     system       512 23 fév 1997  bos

drwxr-xr-x   2 root     system       512 24 fév 1997  etc

drwxr-xr-x   3 root     system       512 09 mar 1999  vgdata

drwxr-xr-x   2 root     system       512 25 oct 2000  chcormer

-rw-r--r--   1 root     system         0 02 nov 14:31 titi

-rw-r--r--   1 root     system         0 02 nov 14:54 tata

-rw-r--r--   1 root     system      6851 02 nov 16:18 toto

exercice 1 : rechercher tous les fichiers dans le file system /tmp seulement ayant été modifiés il y a moins de 24 heures

#find /tmp -xdev -mtime -1 -type f

/tmp/titi

/tmp/toto

/tmp/tata

exercice 2 : rechercher les fichiers toto ou titi sur le file system /tmp

#find /tmp -xdev \( -name toto -o -name titi \)

/tmp/titi

/tmp/toto

exercice 3 : faire une suppression de fichier avec demande de confirmation avec l'option exec et ok

Nous voulons supprimer tous les fichiers dont le nom commence par toto et qui sont situés sous /tmp.

#find /tmp -xdev -name "toto*" -type f -exec rm -i {} \;

rm: Voulez-vous supprimer /tmp/toto? O

Autre syntaxe possible avec l'option -ok :

#find /tmp -xdev -name "toto*" -type f -ok rm {} \;

exercice 4 : rechercher les fichiers modifiés depuis 24 heures avec l'option mtime , les visualiser puis les supprimer après confirmation

#find /tmp -xdev -mtime -1 -type f -exec ls -l {} \; -exec rm -i {} \;

-rw-r--r--   1 root     system         0 02 nov 14:31 /tmp/titi

rm: Voulez-vous supprimer /tmp/titi? o

-rw-r--r--   1 root     system      6851 02 nov 16:18 /tmp/toto

rm: Voulez-vous supprimer /tmp/toto? o

-rw-r--r--   1 root     system         0 02 nov 14:54 /tmp/tata

rm: Voulez-vous supprimer /tmp/tata? o

 

exercice 5 : rechercher un fichier de plus de 1 MO via l'option size

#find /tmp -xdev -size +2000 -type f -exec ls -l {} \;

-rw-r--r--   1 root     system  1091846 02 nov 17:37 /tmp/toto

exercice 6 : rechercher tous les fichiers sous un fs en excluant les fichiers log, core et dmp

#find /logiciels/RIF-AB/re7100 -type f ! \( -name "*.log" -o -name "core" -o -name "*.dmp" \) -exec ls {} \;