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.
Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
doc:systeme:find [09/12/2012 03:10] martin_mtl créée |
doc:systeme:find [26/08/2013 12:01] smolski [Effacer le contenu d'un fichiers] |
||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | //Page en cours de modification : 08 déc 12// | ||
+ | |||
====== Find ====== | ====== Find ====== | ||
- | Cette commande permet de faire des recherches de fichier ou de dossier sous GNU/Linux "en mode console". | + | Cette commande permet de faire des recherches de fichier ou de dossier dans une hiérarchie de répertoires. |
Par exemple, je voudrais chercher le log messages, mais je sais pas où se trouve ce fichier, faites : | Par exemple, je voudrais chercher le log messages, mais je sais pas où se trouve ce fichier, faites : | ||
Ligne 18: | Ligne 20: | ||
===== Quelques options ===== | ===== Quelques options ===== | ||
- | ''-atime +n (ou -n)'' # trouve les fichiers auxquels on a accédé il y a plus de n jours (ou moins de n jours) | + | ^ 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)// | | |
- | ''-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) |//trouve les fichiers modifiés il y a 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)// | |
- | + | |-name |//recherche par motif en respectant la casse// | | |
- | ''-type l ou d ou f'' # indique le type de fichier à rechercher (l pour lien symbolique, d pour répertoire, f pour fichier) | + | |-iname |//recherche par motif sans respecter la casse// | |
===== Recherche simple par nom ===== | ===== Recherche simple par nom ===== | ||
Ligne 47: | Ligne 48: | ||
Prenons un autre exemple. | Prenons un autre exemple. | ||
- | Pour chercher tous les fichiers commençant par "''note''" et définir à partir de quel répertoire on souhaite effectuer la recherche on utilise cette syntaxe : | + | Pour chercher tous les fichiers commençant par //note// et définir à partir de quel répertoire on souhaite effectuer la recherche on utilise cette syntaxe : |
- | $find /home/martin -name '''note*''' | + | $find /home/martin -name 'note*' |
===== Recherche par nom simple & multiple ===== | ===== Recherche par nom simple & multiple ===== | ||
Ligne 56: | Ligne 57: | ||
Je cherche à trouver les répertoires archives dans /media/homebis | Je cherche à trouver les répertoires archives dans /media/homebis | ||
- | # find /media/homebis -type d -name archives | + | # find /media/homebis -type d -name 'archives' |
- | Première chose à noter, je me mets en root pour avoir accès à tous les répertoires. | + | Première chose à noter, il peut être nécessaire de se mettre en root pour avoir accès à tous les répertoires. |
Dans ce cas-ci, je demande donc à **find** de trouver les répertoires | Dans ce cas-ci, je demande donc à **find** de trouver les répertoires | ||
- option : -type | - option : -type | ||
- argument : "d" (comme "directory") | - argument : "d" (comme "directory") | ||
- | indiquent que l'on cherche un répertoire) du nom de '''archives''' à partir du répertoire /media/homebis. | + | indiquant que l'on cherche un répertoire du nom de //archives// à partir du répertoire /media/homebis. |
La réponse : | La réponse : | ||
Ligne 71: | Ligne 72: | ||
/media/homebis/Documents_gr/archives | /media/homebis/Documents_gr/archives | ||
/media/homebis/Documents_gr/mes_fichiers/archives | /media/homebis/Documents_gr/mes_fichiers/archives | ||
+ | |||
+ | Autre exemple un peu plus complexe cette fois. Je désire faire une recherche de tous les fichiers audio de type .mp3 et .ogg | ||
+ | |||
+ | Il existe plus d'une façon d'y arriver. Voyons comment on peut s'y prendre. | ||
+ | |||
+ | Première façon : | ||
+ | find /home/martin/ \( -name '*.mp3' -o -name '*.ogg' \) | ||
+ | |||
+ | On peut noter l'utilisation du -o qui correspond à l'opérateur ou ("or" en anglais) | ||
+ | |||
+ | Cela me donnera toute une liste de fichiers /home/martin/... | ||
+ | |||
+ | Deuxième façon : | ||
+ | Une autre manière d'écrire la commande ci-dessus est la suivante : | ||
+ | find -type f -name "*.mp3" -o -name "*.ogg" | ||
+ | |||
+ | 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 ?. La commande deviendrait donc : | ||
+ | find -type f -name "*.mp?" -o -name "*.ogg" | ||
===== Filtrer en fonction des droits ===== | ===== Filtrer en fonction des droits ===== | ||
Ligne 501: | Ligne 522: | ||
//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 fichiers ==== |
- | Pour effacer le contenu d'un fichier : | + | Pour effacer le contenu d'un fichier |
+ | |||
+ | === le chevron === | ||
+ | |||
+ | Avec [[commande:chevron|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> | ||
+ | |||
+ | === xargs === | ||
Ou bien avec **xargs** : | Ou bien avec **xargs** : | ||
Ligne 511: | Ligne 538: | ||
find -type f -iname nom_du_fichier | xargs cat > nom_du_fichier \;</code> | find -type f -iname nom_du_fichier | xargs cat > nom_du_fichier \;</code> | ||
- | Ou encore avec la commande **cp** : | + | === cp === |
+ | |||
+ | Ou encore avec [[commande: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> |