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 →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Dernière révision Les deux révisions suivantes | ||
doc:systeme:find [27/05/2015 19:38] milou [find] |
doc:systeme:find [22/02/2021 14:36] jpt [Find, -exec et -execdir] |
||
---|---|---|---|
Ligne 5: | Ligne 5: | ||
* Commentaires : //Recherche de fichiers. // | * Commentaires : //Recherche de fichiers. // | ||
* Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-) | * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-) | ||
- | * Suivi : {{tag>en-chantier à-tester à-placer}} - FIXME Pour choisir, voir les autres Tags possibles dans [[:atelier:#tags|l'Atelier]]. | + | * Suivi : |
* Création par [[user>martin_mtl]] le 09/12/2012 | * Création par [[user>martin_mtl]] le 09/12/2012 | ||
* Testé par [[user>smolski]] 26-08-2013 | * Testé par [[user>smolski]] 26-08-2013 | ||
* Commentaires sur le forum : [[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 !)) | * Commentaires sur le forum : [[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 !)) | ||
- | **Nota :** | ||
- | Contributeurs, les FIXME sont là pour vous aider, supprimez-les une fois le problème corrigé ou le champ rempli ! | ||
===== Introduction ===== | ===== Introduction ===== | ||
Ligne 38: | Ligne 36: | ||
^ Options ^ Fonctions ^ | ^ Options ^ Fonctions ^ | ||
- | |-atime +n (ou -n) |//trouve les fichiers auxquels on a accédé il y a plus de n jours (ou moins de n jours)// | | + | |-atime n ou +n ou -n |//trouve les fichiers auxquels on a accédé il y a strictement n jours, ou plus de n jours, ou moins de n jours// | |
- | |-mtime +n (ou -n) |//trouve les fichiers modifiés il y a plus de n jours (ou moins de n jours) | | + | |-mtime n ou +n ou -n |//trouve les fichiers modifiés il y a strictement n jours, ou plus de n jours, ou moins de n jours// | |
- | |-maxdepth n |définit le niveau maximum de sous-répertoire à explorer// | | + | |-maxdepth n |//définit le niveau maximum de sous-répertoire à explorer// | |
|-type l ou d ou f |//indique le type de fichier à rechercher (l pour lien symbolique, d pour répertoire (directory), f pour fichier)// | | |-type l ou d ou f |//indique le type de fichier à rechercher (l pour lien symbolique, d pour répertoire (directory), f pour fichier)// | | ||
|-name |//recherche par motif en respectant la casse// | | |-name |//recherche par motif en respectant la casse// | | ||
Ligne 56: | Ligne 54: | ||
- "''-name'' " est l'option qui indique ici que nous voulons spécifier le nom d'un fichier. | - "''-name'' " est l'option qui indique ici que nous voulons spécifier le nom d'un fichier. | ||
- | Après un long délai d'attente, la recherche se faisant dans toute l'arborescence de la partition, la réponse fini par venir : | + | Après un long délai d'attente, la recherche se faisant dans toute l'arborescence de la partition, la réponse finit par venir : |
<file bash résultat de la commande précédente> | <file bash résultat de la commande précédente> | ||
/home/martin/note</file> | /home/martin/note</file> | ||
- | Si l'on n'est pas sûr de la "casse" (Majuscule ou Minuscule) on utilise l'option ''-iname''. | + | Si l'on n'est pas sûr de la casse (Majuscule ou minuscule) on utilise l'option ''-iname''. |
- | <note>Règle général, on recherche rarement un fichier depuis la racine.</note> | + | <note>Règle générale, on recherche rarement un fichier depuis la racine.</note> |
Prenons un autre exemple. | Prenons un autre exemple. | ||
Ligne 219: | Ligne 217: | ||
- La paire d'accolade est automatiquement remplacée par le nom du fichier, | - La paire d'accolade est automatiquement remplacée par le nom du fichier, | ||
- | - et le point virgule final permet de marquer la fin de la commande. | + | - et le point-virgule final permet de marquer la fin de la commande. |
- | Au cas où plusieurs fichiers sont traités __dans un même répertoire__, pour éviter une relance de la commande après chaque fichier trouvé, remplacer le '';'' (point virgule) final par le signe positif : ''+''. | + | Au cas où plusieurs fichiers sont traités __dans un même répertoire__, pour éviter une relance de la commande après chaque fichier trouvé, remplacer le '';'' (point-virgule) final par le signe positif : ''+''. |
Par exemple ainsi : | Par exemple ainsi : | ||
Ligne 231: | Ligne 229: | ||
De la même manière, évitez les références vides ou les noms de répertoires exprimés en relatif dans **$PATH**.</note> | De la même manière, évitez les références vides ou les noms de répertoires exprimés en relatif dans **$PATH**.</note> | ||
- | <note important>Cette commande est difficile à utiliser sur certains shell car ceux-ci donnent une signification particulière des caractères comme l'accolade ou le point virgule.</note> | + | <note important>Cette commande est difficile à utiliser sur certains shell car ceux-ci donnent une signification particulière des caractères comme l'accolade ou le point-virgule.</note> |
- | Avec **Bash**, la //paire d'accolades sans espace// (''{}'') ne doit pas être protégée, au contraire du// point virgule// qui doit lui être echappé à l'aide d'un backslash: ''\;''. | + | Avec **Bash**, la //paire d'accolades sans espace// (''{}'') ne doit pas être protégée, au contraire du// point-virgule// qui doit être échappé à l'aide d'un backslash: ''\;''. |
Voici par exemple comment on peut compter le nombre de lignes de chaque fichier de code Python de ce site: | Voici par exemple comment on peut compter le nombre de lignes de chaque fichier de code Python de ce site: | ||
Ligne 386: | Ligne 384: | ||
</code> | </code> | ||
- | On va maintenant créer les fichiers et dossiers qui nous servirons pour la | + | On va maintenant créer les fichiers et dossiers qui nous serviront pour la |
suite. | suite. | ||
Ligne 543: | Ligne 541: | ||
./toctoc2/paf | ./toctoc2/paf | ||
</file> | </file> | ||
+ | |||
+ | //Fastoche ! Merci// **captnfab** :-D | ||
==== Répertoires de travail pour -exec et -execdir ==== | ==== Répertoires de travail pour -exec et -execdir ==== | ||
Ligne 572: | Ligne 572: | ||
On voit ici que le répertoire de travail est à chaque fois le répertoire contenant le dossier ''pif''. | On voit ici que le répertoire de travail est à chaque fois le répertoire contenant le dossier ''pif''. | ||
+ | |||
+ | ==== Copier un fichier dans plusieurs répertoires ==== | ||
+ | |||
+ | - Soit un fichier unique : **fichier1** | ||
+ | - à copier avec rsync dans tous les sous-répertoires de /media/rep1/rep2/ dont le nom commence par le chiffre ''1'' | ||
+ | <code user>find /media/rep1/rep2/ -maxdepth 1 -type d -iname '1*' -exec rsync -avz fichier1 "{}/" \;</code> | ||
+ | <code config retour de la commande find>sending incremental file list | ||
+ | fichier1 | ||
+ | |||
+ | sent 518,342 bytes received 35 bytes 345,584.67 bytes/sec | ||
+ | total size is 2,197,504 speedup is 4.24 | ||
+ | sending incremental file list | ||
+ | fichier1 | ||
+ | […]</code> | ||
+ | |||
+ | La commande peut évidemment être adaptée si le filtre sur le nom est différent (ou s'il n'y a pas de filtre sur le nom), ou si ce sont des sous-sous-répertoires, ou si ce sont des fichiers à remplacer, ou si la copie doit être faite avec ''cp'', etc. | ||
==== Renommer les répertoires ==== | ==== Renommer les répertoires ==== | ||
Ligne 590: | Ligne 606: | ||
Vous pouvez voir l'original là : | Vous pouvez voir l'original là : | ||
- | * http://wiki.chezlefab.net/tuto_nix/tp/find_01bis | + | * Obsolète : wiki.chezlefab.net/tuto_nix/tp/find_01bis |
==== Renommer une chaîne de caractère dans des fichiers ==== | ==== Renommer une chaîne de caractère dans des fichiers ==== | ||
Ligne 608: | Ligne 624: | ||
//Merci à //**adrien**// sur le chan //#slackware-fr// et au //**captnfab**// not' matelot hottentot favori !// :-) | //Merci à //**adrien**// sur le chan //#slackware-fr// et au //**captnfab**// not' matelot hottentot favori !// :-) | ||
- | ==== Effacer le contenu d'un fichiers ==== | + | ==== Effacer le contenu d'un fichier ==== |
Pour effacer le contenu d'un fichier | Pour effacer le contenu d'un fichier |