TUTOS.EU

Rechercher un fichier sous Linux

Rechercher un fichier en ligne de commande sous Linux

La commande find permet de faire une recherche.
Aussi, adaptez cette ligne de commande où l'on va ici effectuer une recherche depuis la racine qui est symbolisée par / :

sudo find / -name nomduchier
Lien vers le fichier : cliquez ici Copier le code

Par exemple la recherche du fichier syslog va passer par cette commande :

sudo find / -name syslog
Lien vers le fichier : cliquez ici Copier le code

2 résultats seront retournés :
/var/log/syslog
/var/log/installer/syslog

Mais il y a beaucoup plus efficace avec la commande mlocate que l'on installe ainsi :

sudo apt-get install mlocate
Lien vers le fichier : cliquez ici Copier le code

Ensuite il faut mettre à jour l'index avec la commande

updatedb
Lien vers le fichier : cliquez ici Copier le code

Reste à chercher quelque-chose avec la commande mlocate. Exemple :

Si vous mettez l'option -A, alors tous les mots entrés devront être contenu dans le résultat pour être affiché

mlocate -A mot1 mot2
Lien vers le fichier : cliquez ici Copier le code

Exemple en recherchant les mots light et log

En complément, vous pouvez rechercher un mot ou une ligne dans plusieurs fichiers.

grep -r -i motrecherché /répertoire/de/recherche
Lien vers le fichier : cliquez ici Copier le code

Par exemple ici on recherche /usr/sbin/httpd dans /lib/systemd/system

grep -r -i /usr/sbin/httpd /lib/systemd/system
Lien vers le fichier : cliquez ici Copier le code

Avec la commande find, vous pouvez n'afficher que les fichiers qui datent de plus de 30 jours. Exemple :

find /var/log/ -maxdepth 1 -mtime +30
Lien vers le fichier : cliquez ici Copier le code

Si vous devez effacer/manipuler des fichiers qui contiennent des caractères spéciaux, vous risquez d'avoir des difficultés.
Dans le cas où vous devez les déplacer dans un répertoire temp pour ensuite les supprimer ou autre, du regex avec grep peut vous aider.
Vous pouvez déjà valider que vous arrivez à les afficher/sélectionner avec

ls -1 | grep '[!a-zA-Z0-9_.-]'
Lien vers le fichier : cliquez ici Copier le code

[!a-zA-Z0-9_.-] permet de sélectionner les fichiers qui ont un caractère qui n'est pas une chiffre, une lettre ou encore _ . ou -

en complément avec la commande xargs vous pouvez par exemple déplacer les fichiers dans un répertoire temp

mkdir -p temp
ls -1 | grep '[!a-zA-Z0-9_.-]' | xargs -I {} mv "{}" temp/
Lien vers le fichier : cliquez ici Copier le code

Article(s) suivant(s)

2