logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

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
Prochaine révision Les deux révisions suivantes
doc:systeme:find [26/08/2013 15:41]
smolski [TP01 - exec et execdir]
doc:systeme:find [22/09/2013 23:31]
127.0.0.1 modification externe
Ligne 1: Ligne 1:
 ====== Find ====== ====== Find ======
  
-En cours de réécriture ​**smolski** 26/08/2013+(//testé// - **smolski** 26/08/2013) Le retour sur le forum est ici : [[http://​debian-facile.org/​viewtopic.php?​id=7310 | Lien vers le forum concernant ce tuto]] 
 +>​N'​hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !
  
-Les exemples de ce tuto sont tous à faire en [[commande:​su|user]] sauf spécification ​précise pour certains.+  * Objet : find 
 +  * Niveau requis : DÉBUTANT 
 +  * Tags : 
 +  * Commentaires : //recherche de fichiers. // 
 +  * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-) 
 + 
 + 
 +Les exemples de ce tuto sont tous à faire en //user// sauf spécification.
  
 Cette commande permet de faire des recherches de fichier ou de dossier dans une hiérarchie de répertoires. Cette commande permet de faire des recherches de fichier ou de dossier dans une hiérarchie de répertoires.
Ligne 61: Ligne 69:
  
 Je cherche à trouver les répertoires archives dans /​media/​homebis. Je cherche à trouver les répertoires archives dans /​media/​homebis.
-Première chose à noter, il peut-être nécessaire de se mettre en [[commande:su|root]] pour avoir accès à tous les répertoires.+Première chose à noter, il peut-être nécessaire de se mettre en [[:​doc:​systeme:su|root]] pour avoir accès à tous les répertoires.
 <code bash> <code bash>
 find /​media/​homebis -type d -name '​archives'</​code>​ find /​media/​homebis -type d -name '​archives'</​code>​
Ligne 98: Ligne 106:
  
 Si je tape cette commande en étant dans mon répertoire /​home/​martin,​ le résultat sera une liste de fichiers ./.... \\ Si je tape cette commande en étant dans mon répertoire /​home/​martin,​ le résultat sera une liste de fichiers ./.... \\
-Il est intéressant de savoir que l'on peut étendre la recherche aux fichiers mp3 et mp4 en remplaçant le 3 par un ?((Voir : [[manuel:​regexp]])). La commande deviendrait donc :+Il est intéressant de savoir que l'on peut étendre la recherche aux fichiers mp3 et mp4 en remplaçant le 3 par un ?((Voir : [[:​doc:​programmation:​shell:​regexp]])). La commande deviendrait donc :
 <code bash> <code bash>
 find -type f -name "​*.mp?"​ -o -name "​*.ogg"</​code>​ find -type f -name "​*.mp?"​ -o -name "​*.ogg"</​code>​
  
 +===== Rechercher pour supprimer =====
 +
 +
 +Un fonction intéressante de //find// est de supprimer en lot les fichiers trouvés.
 +
 +Il n'est point rare de télécharger ou d'​installer de nombreux fichiers qui ne nous servent plus, mais devant le travail pénible de devoir supprimer tous ces fichiers, on repousse au lendemain cette charge. Heureusement grâce à la fonction -delete de find, c'est un pur bonheur.
 +
 +==== Paramètre -delete ====
 +
 +Exemple, si dans votre home ou autre dossier vous avez beaucoup de fichier .tar.gz qui ne vous servent plus à rien. Il suffit de lancer la commande suivante :
 +<code bash>​find -iname "​*.tar.gz"​ -delete</​code>​
 +
 +<note important>​**Attention,​ la fonction -delete ne vous demande pas de confirmation**</​note>​
 +=== Supprimer avec demande de confirmation ===
 +Pour une demande de confirmation avant suppression de chaque fichier "​.tar.gz"​ trouvés :
 +<code bash>​find -iname "​*.tar.gz"​ -ok rm {} \;</​code>​
 +Merci à [[http://​debian-facile.org/​viewtopic.php?​pid=67484#​p67484|MicP]] pour cette trouvaille :)
 +
 + --- //​[[|david96]] 12/09/2013 21:15//
 ===== Filtrer en fonction des droits ===== ===== Filtrer en fonction des droits =====
  
Ligne 123: Ligne 150:
 ===== Recherche par motif ===== ===== Recherche par motif =====
  
-Pour rechercher un motif, il faut utiliser la même option, et utiliser les [[commande:regexp | REGEXP]].+Pour rechercher un motif, il faut utiliser la même option, et utiliser les [[:​doc:​programmation:​shell:regexp | REGEXP]].
  
 Voici par exemple la recherche de tous les fichiers terminant par ''​.java''​ dans le dossier courant: Voici par exemple la recherche de tous les fichiers terminant par ''​.java''​ dans le dossier courant:
Ligne 138: Ligne 165:
 </​code>​ </​code>​
  
 +===== Rechercher les fichiers n'​appartenant pas à l'​utilisateur =====
 +
 +Il peut parfois être utile de rechercher les fichiers n'​appartenant pas à l'​utilisateur,​ en vue de corriger un problème rencontré avec une application (par exemple, un fichier peut appartenir à root au lieu d'​appartenir à l'​utilisateur ; ce dernier risque de ne pas avoir de droits dessus, ce que peut alors provoquer une erreur dans une application cherchant à modifier le dit fichier).
 +
 +Pour ce faire, il suffit d'​exécuter là commande suivante, où « utilisateur » est à remplacer par votre nom d'​utilisateur :
 +
 +<code bash>
 +find /​home/​utilisateur ! -user utilisateur
 +</​code>​
 +
 +ou bien, en utilisant des variables :
 +
 +<code bash>
 +find $HOME ! -user $USER
 +</​code>​
 +
 +Pour avoir davantage d'​informations sur les fichiers ainsi trouvés, vous pouvez ajouter l'​option ''​ls''​ :
 +
 +<code bash>
 +find $HOME ! -user $USER -ls
 +</​code>​
 ===== -exec - Exécuter une commande ===== ===== -exec - Exécuter une commande =====
  
Ligne 215: Ligne 263:
 À maîtriser absolument avant de poursuivre. À maîtriser absolument avant de poursuivre.
  
-  * [[manuel:repertoire ​| Différents types de chemin — Notion de répertoire de travail]] - Pas à pas.+  * [[:doc:​programmation:​shell:​repertoires ​| Différents types de chemin — Notion de répertoire de travail]] - Pas à pas.
  
  
Ligne 269: Ligne 317:
 </​code>​ </​code>​
  
-On voit qu'​ici,​ pour chaque dossier ''​paf''​ de trouvé, c'est seulement __le chemin du répertoire d'où nous lançons notre commande find__, qui est indiqué par l'​exécution de [[commande:pwd | la commande : pwd]], ce qui n'est pas ce que nous voulons obtenir. 8-o+On voit qu'​ici,​ pour chaque dossier ''​paf''​ de trouvé, c'est seulement __le chemin du répertoire d'où nous lançons notre commande find__, qui est indiqué par l'​exécution de [[:​doc:​systeme:pwd | la commande : pwd]], ce qui n'est pas ce que nous voulons obtenir. 8-o
  
 Employons ''​-execdir''​ maintenant : Employons ''​-execdir''​ maintenant :
Ligne 447: Ligne 495:
  
 <code bash> <code bash>
-~/​tmp/​df_tp01$ ​find .+find .
 </​code>​ </​code>​
  
 On va se concentrer sur les répertoires ''​paf''​ : On va se concentrer sur les répertoires ''​paf''​ :
 <code bash> <code bash>
-~/​tmp/​df_tp01$ ​find . -type d -name paf+find . -type d -name paf</​code>​ 
 +<​code>​
 ./​toctoc3/​pif/​paf ./​toctoc3/​pif/​paf
 ./​toctoc1/​paf ./​toctoc1/​paf
Ligne 462: Ligne 511:
 Pour afficher les sous-dossiers en premier, on ajoute l'​option ''​-depth''​ **au début** de la commande Pour afficher les sous-dossiers en premier, on ajoute l'​option ''​-depth''​ **au début** de la commande
 <code bash> <code bash>
-~/​tmp/​df_tp01$ ​find . -depth -type d -name paf+find . -depth -type d -name paf</​code>​ 
 +<​code>​
 ./​toctoc3/​pif/​paf ./​toctoc3/​pif/​paf
 ./​toctoc1/​paf ./​toctoc1/​paf
Ligne 476: Ligne 526:
  
 <code bash> <code bash>
-~/​tmp/​df_tp01$ ​find . -depth -type d -name paf -exec pwd \;+find . -depth -type d -name paf -exec pwd \;</​code>​ 
 +<​code>​
 /​home/​captnfab/​tmp/​df_tp01 /​home/​captnfab/​tmp/​df_tp01
 /​home/​captnfab/​tmp/​df_tp01 /​home/​captnfab/​tmp/​df_tp01
Ligne 487: Ligne 538:
  
 <code bash> <code bash>
-~/​tmp/​df_tp01$ ​find . -depth -type d -name paf -execdir pwd \;+find . -depth -type d -name paf -execdir pwd \;</​code>​ 
 +<​code>​
 /​home/​captnfab/​tmp/​df_tp01/​toctoc3/​pif /​home/​captnfab/​tmp/​df_tp01/​toctoc3/​pif
 /​home/​captnfab/​tmp/​df_tp01/​toctoc1 /​home/​captnfab/​tmp/​df_tp01/​toctoc1
Ligne 504: Ligne 556:
  
 <code bash> <code bash>
-~/​tmp/​df_tp01$ ​find . -depth -type d -name paf -execdir mv paf ploum  \; +find . -depth -type d -name paf -execdir mv paf ploum  \;
 </​code>​ </​code>​
  
Ligne 511: Ligne 562:
  
 <code bash> <code bash>
-~/​tmp/​df_tp01$ ​find . -depth -type d -name ploum+find . -depth -type d -name ploum
 </​code>​ </​code>​
  
Ligne 539: Ligne 590:
 === le chevron === === le chevron ===
  
-Avec [[commande:chevron|la commande chevron]]+Avec [[:doc:​programmation:​shell:​chevrons|la commande chevron]]
 <code bash> <code bash>
 find -type f -iname nom_du_fichier -execdir cat {} nom_du_fichier + > nom_du_fichier \;</​code>​ find -type f -iname nom_du_fichier -execdir cat {} nom_du_fichier + > nom_du_fichier \;</​code>​
Ligne 551: Ligne 602:
 === cp === === cp ===
  
-Ou encore avec [[commande:cp|la commande cp]] :+Ou encore avec [[:​doc:​systeme:cp|la commande cp]] :
 <code bash> <code bash>
 find -type f -iname nom_du_fichier -exec cp /dev/null {} \;</​code>​ find -type f -iname nom_du_fichier -exec cp /dev/null {} \;</​code>​
doc/systeme/find.txt · Dernière modification: 24/10/2022 18:38 par Jean-Pierre Pinson

Pied de page des forums

Propulsé par FluxBB