Rechercher un fichier sous GNU-Linux, la commande FIND, et autre
Il peut faire peur (find), alors que l'outil est fantastique, et finalement assez simple !
De base sous GNU/Linux, vous disposez de plusieurs outils pour retrouver des fichiers ou programmes. On connait "whereis" qui permet de trouver l'emplacement d'un programme, son source si présent, et le manuel associé, par exemple :
[bash]whereis whois[/bash]
Mais ceci ne permet pas de chercher des fichiers spécifiques. Vous disposez ensuite de "locate" qui permet de chercher dans la liste des fichiers indexés par "updatedb" (mlocate), dont les chemins sont configurés généralement dans /etc/updatedb.conf, exemple :
[bash]locate mon_fichier.txt[/bash]
Si des fichiers contenant la chaine dans leurs noms sont indéxés alors ils apparaîtront. Si vous voulez effectuer la recherche sur la base la plus récente possible, il suffit de mettre à jour en lançant la commande à la main :
[bash]sudo updatedb[/bash]
(peut prendre du temps si votre disque contient beaucoup de fichiers !)
Mais revenons au sujet qui nous interesse, la commande find. Jusqu'ici nous avons vu des outils de recherche limités, ou conditionné par une indexation. La commande find permet de lancer une recherche n'importe où, plus ou moins approfondie.
Par exemple, je veux chercher dans le dossier courant tous les fichiers et dossiers contenant "tableau", voici la commande :
[bash]find ./ -name ‘*tableau*'[/bash]
Voilà qui est fait !
Si je ne suis pas dans le dossier qui m'interesse, je peux aussi lancer la recherche comme ceci :
[bash]find /home/user/ -name ‘*tableau*'[/bash]
Très simple non ?
Allons un peu plus loin, je veux maintenant chercher tous les fichiers finissant par .php qui contiennent la chaine "Content-Transfer-Encoding: 8bit" :
[bash]find ./ -name ‘*.php’|xargs grep "Content-Transfer-Encoding: 8bit"[/bash]
Ca peut être très utile !
Autre exemple avec find et la commande associée, je souhaite trouver tous les dossiers vides, et les supprimer :
[bash]find ./ -depth -type d -empty -exec rmdir {} \;[/bash]
ou simplement chercher tous les dossiers vides (ici dans le home de user) :
[bash]find /home/user/ -empty -type d[/bash]
Autre possibilité, trouver les fichiers uniquement contenus dans un seul et même dossier, et n'afficher QUE le nom du fichier sans les "slash" autour :
[bash]find /home/user/dossier/ -maxdepth 1 -type f -exec /bin/basename {} \;[/bash]
On va finir ce post avec deux autres exemples bien utiles à mon sens, dabord compter le nombre de fichiers dans une arborescence en combinant la commande avec wc:
[bash]find ./ -type f|wc -l[/bash]
et enfin, la possibilité de chercher par date, avec par exemple, tous les fichiers modifiés il y a 2 jours :
[bash]find /home/user/ -mtime 2 -type f[/bash]
ou tous mes fichiers modifiés ce jour :
[bash]find $HOME -mtime 0[/bash]
Voilààà! pour plus d'info : man find
En espérant que ça puisse vous être utile.
![]()
2 Commentaires to Rechercher un fichier sous GNU-Linux, la commande FIND, et autre
Ajouter un commentaire
Pages
- À propos
- Alexandre Blanc Experience or work background
- Connected=hacked, cloud=leak, why
- Keeping track for my speaking events / appearances
- My take on Zero Trust – SP 800-207
- Openvpn and pihole on OVH VPS Server FAQ
- Raspberry 3 router project FAQ
- Spotting LinkedIn fake profiles, the tail of industrial spying, should I trust this contact ?
Search this Site
Archive
- août 2026
- avril 2025
- juin 2024
- mai 2024
- mars 2024
- février 2022
- janvier 2022
- octobre 2021
- septembre 2021
- mai 2021
- octobre 2020
- juin 2020
- avril 2020
- avril 2019
- janvier 2019
- juin 2018
- mars 2017
- octobre 2016
- août 2016
- mai 2016
- septembre 2015
- mai 2015
- février 2015
- novembre 2014
- septembre 2014
- août 2014
- janvier 2013
- décembre 2012
- juillet 2012
- janvier 2012
- novembre 2011
- octobre 2011
- mai 2011
- avril 2011
- mars 2011
- février 2011
- janvier 2011
- décembre 2010
- novembre 2010
- octobre 2010
- septembre 2010
A voir aussi, combiner les conditions avec « and » en utilisant la commande find :
http://www.go2linux.org/linux/2011/02/how-use-find-boolean-operators-and-or-not-903
Une autre petite avec find tient ! :D
Objectif : Dans un dossier, copier tous les fichiers photos (.JPG pour le cas qui m’intéresse) ajouté aujourd’hui, dans un autre dossier du serveur en une seule commande depuis le dossier concerné.
Solution :
[code]find ./ -name ‘*.JPG’ -mtime 0 -maxdepth -exec cp {} /home/dossier_destination/ \;[/code]
Voilà, j’adore cette commande find :D je vous laisse imaginer la demande « Alex, dans ce dossier j’ai des photos ajoutées du jour, tu pourrais pas me les copier sur mon autre blog, parce que les trier au milieu de toutes celles qu’il y a déjà c’est trop la misère! »….. problème réglé en moins d’une minute avec find ;)