Outils pour utilisateurs

Outils du site


linux:find (lu 59913 fois)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
linux:find [03-07-2013 15:24]
edmc73
linux:find [07-05-2023 20:23] (Version actuelle)
edmc73 [Commande utile]
Ligne 3: Ligne 3:
 ===== Commande utile ===== ===== Commande utile =====
  
-Permet d'afficher les fichier modifiés il y a moins d'un jour trié par ordre décroissant de leur taille+Permet d'afficher les fichier modifiés il y a moins d'un jour trié par ordre décroissant de leur taille (utile dans le cas d'un piratage de moins de 24h pour voir les fichiers éventuellement modifiés)
   find -mtime -1 -type f -exec ls -sh {} \; | sort -hr   find -mtime -1 -type f -exec ls -sh {} \; | sort -hr
 +
 +Dans la vie de tous les jours, on cherche un fichier avec un morceau de nom sans savoir si il y a des majuscules ou non
 +  find /home/user/Documents -iname '*compta*'
 +
 +En installant le paquet **mlocate** (variante améliorée de l'ancien locate) vous pouvez trouver plus rapidement un fichier qu'avec la commande **find** puisque celui-ci gère une base de données de tous les fichiers du système. Exemple pour la même recherche.
 +  locate compta
 +
 +A la différence de **find** qui fait une recherche en temps réel, **locate** se met à jour une fois par jour via la commande **updatedb**
 +
 +__ Purger ses vieux fichiers de plus de 10 jours qui commence par 'export' (par exemple) __
 +
 +Vérifier avant de supprimer
 +  find /home/moi/backup -type f -name 'export*' -mtime +10
 +
 +Ajouter simplement **-delete** pour supprimer 
 +  find /home/moi/backup -type f -name 'export*' -mtime +10 -delete
 +
 +Un autre exemple pour supprimer tous les liens symboliques à supprimer dans des répertoires en se limitant à une recherche dans 2 sous-dossiers
 +  find daily.* -maxdepth 2 -type l -delete
 +
 +
 +Pour les anciennes version
 +
 +Vérifier avant de supprimer
 +  find /home/moi/backup -type f -name 'export*' -mtime +10 -exec echo "rm -f {}" \;
 +Passer à l'action pour de vrai
 +  find /home/moi/backup -type f -name 'export*' -mtime +10 -exec rm -f {} \;
 +
 +
 +
  
 ===== Utilisation de la commande find ===== ===== Utilisation de la commande find =====
Ligne 11: Ligne 41:
 La commande find permet de chercher des fichiers, et eventuellement d'éxecuter une action dessus. Par exemple : La commande find permet de chercher des fichiers, et eventuellement d'éxecuter une action dessus. Par exemple :
  
-  find . -print | less +  find . | less 
-affiche la liste de tous les fichiers du répertoire courant (l'option -print est normalement incluse par défaut). On peut rediriger les messages d'erreur vers le //trou noir// (le périphérique /dev/null) :+affiche la liste de tous les fichiers du répertoire courant. On peut rediriger les messages d'erreur vers le //trou noir// (le périphérique /dev/null) :
  
-  find . -print 2> /dev/null | less+  find . 2> /dev/null | less
 ou les inclures (on rassemble alors en un seul canal la sortie standard et le sortie d'erreur standard) : ou les inclures (on rassemble alors en un seul canal la sortie standard et le sortie d'erreur standard) :
  
-  find . -print 2>&1 liste | less+  find . 2>&1 liste | less
 Les options de la commande find sont nombreuses.  Les options de la commande find sont nombreuses. 
  
Ligne 23: Ligne 53:
 ^ Option ^ Signification                                ^ ^ Option ^ Signification                                ^
 | -name  | Recherche par nom de fichier.                | | -name  | Recherche par nom de fichier.                |
 +| -iname | Recherche par nom insensible à la casse      |
 | -type  | Recherche par type de fichier.               | | -type  | Recherche par type de fichier.               |
 | -user  | Recherche par propriétaire.                  | | -user  | Recherche par propriétaire.                  |
 | -group | Recherche par appartenance à un groupe.      | | -group | Recherche par appartenance à un groupe.      |
 | -size  | Recherche par taille de fichier.             | | -size  | Recherche par taille de fichier.             |
-| -atime | Recherche par date de dernier accès.         +| -atime | Recherche par date de dernier accès en jours.| 
-| -mtime | Recherche par date de dernière modification. | +| -mtime | Recherche par date de dernière modification en jours. | 
-| -ctime | Recherche par date de création.              |+| -ctime | Recherche par date de création en jours.              | 
 +| -amin  | Recherche par date de dernier accès en minutes.| 
 +| -mmin  | Recherche par date de dernière modification en minutes. | 
 +| -cmin  | Recherche par date de création en minutes.              |
 | -perm  | Recherche par autorisations d'accès.         | | -perm  | Recherche par autorisations d'accès.         |
 | -links | Recherche par nombre de liens au fichier.    | | -links | Recherche par nombre de liens au fichier.    |
Ligne 36: Ligne 70:
 Pour les options -size, -atime, -mtime, -ctime et -links, il faut spécifier une valeur, précédée par le signe ''+'' pour ''supérieur à'', ''-'' pour ''inférieur à'', ou rien pour ''égal à''. Par exemple : Pour les options -size, -atime, -mtime, -ctime et -links, il faut spécifier une valeur, précédée par le signe ''+'' pour ''supérieur à'', ''-'' pour ''inférieur à'', ou rien pour ''égal à''. Par exemple :
  
-  find . -mtime -3 -print+  find . -mtime -3
 affiche les fichiers dont les dernières modifications remontent à moins de 3 jours (donc tous les fichiers modifiés entre aujourd'hui et il y a trois jours seront affichés). De même, +5 afficherait les fichiers dont les dernières modifications remontent à plus de 5 jours. affiche les fichiers dont les dernières modifications remontent à moins de 3 jours (donc tous les fichiers modifiés entre aujourd'hui et il y a trois jours seront affichés). De même, +5 afficherait les fichiers dont les dernières modifications remontent à plus de 5 jours.
  
Ligne 42: Ligne 76:
  
 Pour afficher tous les fichiers se terminant par ''.c'' : Pour afficher tous les fichiers se terminant par ''.c'' :
-  find . -name ".c" -print+  find . -name "*.c" 
 + 
 +Vous pouvez utiliser les caractères joker ''*'' pour plusieurs caractères et ''?'' pour un caractères. Utilisez les crochets pour filtrer sur un caractère. 
 +  find . -name "*edmc7[345]*" 
 +N'affichera que les fichiers qui contiennent edmc73 ou edmc74 ou edmc75 
 +  
 Pour afficher tous les répertoires dont le nom se termine par ''s'' : Pour afficher tous les répertoires dont le nom se termine par ''s'' :
-  find . -type d -name "*s" -print +  find . -type d -name "*s" 
-Pour afficher tous les fichiers, on aurait utilisé le code f. \\ +   
-Pour afficher tous les fichiers ayant une taille de 10 blocs9.1 +Pour afficher tous les fichiers, on aurait utilisé le ''-type f''. \\ 
-  find . -size 10 -print+Pour afficher tous les fichiers ayant une taille de 10 blocs 
 +  find . -size 10 
 +  
 ce qui est équivalent à demander la liste des fichiers ayant une taille de 5120 caractères : ce qui est équivalent à demander la liste des fichiers ayant une taille de 5120 caractères :
- +  find . -size 5210c 
-  find . -size 5210c -print +   
-On aurait pu aussi demander la liste des fichiers ayant une taille supérieure (+200k) ou inférieure (-200k) à 200 Ko. \\+On aurait pu aussi demander la liste des fichiers ayant une taille supérieure (+200k) ou inférieure (-200k) à 200 Ko. 
 +  find . -size +200k 
 +  
 Pour afficher tous les fichiers ayant une certaine permission exprimée en octale (voir section 1.9.6 page [*]) : Pour afficher tous les fichiers ayant une certaine permission exprimée en octale (voir section 1.9.6 page [*]) :
-  find . -perm 755 -print+  find . -perm 755 
 +  
 ou ayant au minimum les droits d'écriture pour le groupe : ou ayant au minimum les droits d'écriture pour le groupe :
- +  find . -perm -020 
-  find . -perm -020 -print+  
 Pour éxecuter la commande ls -l pour chaque fichier trouvé : Pour éxecuter la commande ls -l pour chaque fichier trouvé :
   find . -type f -exec ls -l {} \;   find . -type f -exec ls -l {} \;
 +  
 et pour demander confirmation avant chaque action : et pour demander confirmation avant chaque action :
- 
   find . -type f -ok -exec rm {} \;   find . -type f -ok -exec rm {} \;
 +  
 Toute autre commande peut être éxecutée avec l'option -exec. Toute autre commande peut être éxecutée avec l'option -exec.
  
-Pour associer plusieurs critères avec -a pour et, -o pour ou, ! pour négation. Par exemple : +Pour associer plusieurs critères avec ''-a'' ou ''-and'' pour et, ''-o'' ou ''-or'' pour ou, ''!'' ou ''-not'' pour négation. Par exemple : 
-  find . ! -user root -print+  find . ! -user root 
 +  
 affiche tous les fichiers n'appartenant à root, et affiche tous les fichiers n'appartenant à root, et
- +  find . \( -name '*.tex' -o -name '*.dvi' \)  
-  find . \( -name '*.tex' -o -name '*.dvi' \) -print+  
 affiche tous les fichiers se terminant par ''.tex'' ou ''.dvi''. affiche tous les fichiers se terminant par ''.tex'' ou ''.dvi''.
 +
 +.
 +
 +
 +On peut aussi afficher les infos que l'on veut avec printf
 +  find . -printf '%f %u:%g %a'
 +Affichera le nom du fichier seulement suivi du user:group et dernière date d'accès
 +
 +Si on veux savoir combien de fichiers sont utilisés par utilisateur
 +  find . -printf '%u' | sort | uniq -c
 +  
 +===== Alternatives =====
 +
 +**find** est récursif. Si vous voulez supprimer une liste de fichier dans un seul répertoire et donc sans supprimer les fichiers des sous répertoires, utilisez la commande **xargs**
 +
 +  ls *fichier*.txt | xargs rm
 +
 +
 +Sinon utilisez l'option ''-maxdepth''
 +  find . -maxdepth 1 -type f
 +
linux/find.1372857897.txt.gz · Dernière modification: 03-07-2013 15:24 de edmc73