Plusieurs d’entre vous, collègues utilisateurs d’Ubuntu, seront familiers avec l’outil « Rechercher des fichiers » qui vous permet de rechercher des fichiers. Comme c’est vrai avec la plupart des choses dans Linux, il y a de grands outils de bureau, mais plus de puissance peut être trouvée dans Terminal que n’importe quel outil de bureau rationalisé peut égaler.
Aujourd’hui, je voudrais vous présenter quelques outils qui peuvent transformer une corvée de recherche de fichiers en un processus facile.
locate
Le premier outil avec lequel vous devriez devenir à l’aise est aussi l’un des plus simples. Le programme locate
fonctionne de manière similaire à la plupart des outils de recherche graphique.
Utilisation
Disons que vous avez lu comment modifier X pour fournir des performances vidéo améliorées. Le document que vous lisez dit de modifier le fichier xorg.conf
, mais le document ne dit pas où il se trouve et vous ne savez pas comment le trouver. Vous pouvez utiliser locate
pour le trouver pour vous rapidement :
$ locate xorg.conf/etc/X11/xorg.conf/usr/share/man/man5/xorg.conf.5.gz/var/lib/x11/xorg.conf.md5sum/var/lib/x11/xorg.conf.roster
Il est clair que /etc/X11/xorg.conf
est le fichier que nous recherchons, mais que se passerait-il si des dizaines ou même des centaines de résultats étaient retournés ? Comment pourriez-vous gérer tout cela ? Si vous connaissez un peu les expressions régulières (chaque utilisateur de Linux devrait vraiment apprendre les bases), vous pouvez facilement utiliser des expressions régulières pour rechercher des répertoires ou des fichiers. Par exemple, nous pouvons rechercher une correspondance exacte pour xorg.conf
avec la commande suivante:
$ locate -r '/xorg.conf$'/etc/X11/xorg.conf
Si vous voulez rechercher des fichiers sans sensibilité à la casse, vous pouvez utiliser l’option -i
. Par exemple:
$ locate -i 'monthly report'/home/chris/Documents/August Monthly Report.doc/home/chris/Documents/July Monthly Report.doc/home/chris/Downloads/latest monthly report.doc
Ce qui peut vous dérouter lorsque vous commencez à utiliser locate
, c’est qu’elle ne renvoie pas seulement des correspondances, mais si la correspondance est un répertoire, elle liste également tous les répertoires et fichiers sous ce répertoire. Par exemple:
$ locate Desktop/home/chris/Desktop/home/chris/Desktop/Head Shot.jpg/home/chris/Desktop/Skype.lnk/home/chris/Desktop/Steam.lnk...
Cette commande renvoie plus de mille entrées sur mon système. Pour réduire les résultats à une liste d’entrées qui correspondent au terme de recherche sans tous les fichiers et répertoires contenus, utilisez l’option -b
:
$ locate -b Desktop/home/chris/Desktop/home/chris/bin/recordSoundAndDesktop.sh/opt/HipChat4/lib/QtQuick/Controls/Styles/Desktop/usr/include/qt4/QtGui/QDesktopServices/usr/include/qt4/QtGui/QDesktopWidget/usr/lib/libreoffice/program/wizards/common/Desktop.py/usr/lib/libreoffice/share/gallery/computers/Computer-Desktop.png/usr/lib/python2.7/dist-packages/xdg/DesktopEntry.py/usr/lib/python2.7/dist-packages/xdg/DesktopEntry.pyc/usr/lib/python3/dist-packages/xdg/DesktopEntry.py/usr/lib/python3/dist-packages/xdg/__pycache__/DesktopEntry.cpython-35.pyc/usr/lib/x86_64-linux-gnu/qt5/qml/QtQuick/Controls/Styles/Desktop/usr/share/kde4/apps/kio_desktop/DesktopLinks/usr/share/man/man3/File::DesktopEntry.3pm.gz/usr/share/perl5/File/DesktopEntry.pm/usr/share/sounds/KDE-Window-All-Desktops-Not.ogg/usr/share/sounds/KDE-Window-All-Desktops.ogg
Il y a encore pas mal de correspondances, mais nous n’avons plus à trier tous les résultats supplémentaires pour trouver ce que nous cherchons.
Note importante
La commande locate
s’appuie sur une base de données slocate pour fonctionner. Cette base de données met en cache les noms de répertoires et de fichiers du système de fichiers et permet à la commande locate
d’opérer en quelques instants plutôt que de prendre de longues périodes de temps pour rechercher dans l’ensemble du système de fichiers.
Cette capacité n’est cependant pas sans coût. Par défaut, votre système exécutera une commande pour mettre à jour cette base de données une fois par jour à 6h25. Cette commande mettra à jour la base de données avec toutes les modifications apportées au système de fichiers depuis la dernière mise à jour.
Si vous avez effectué des modifications récemment, comme l’ajout ou la suppression d’une grande quantité de fichiers et de répertoires, et que vous voulez utiliser la commande locate
pour rechercher dans ces nouveaux répertoires et fichiers, vous pouvez mettre à jour manuellement la base de données slocate à tout moment avec la commande suivante :
$ sudo updatedb
Selon le volume des modifications effectuées depuis la dernière mise à jour de la base de données slocate, la mise à jour peut prendre de quelques secondes à quelques minutes. Une fois que c’est fait, vous êtes prêt à rechercher à nouveau avec locate
.
qui
locate
est excellent pour rechercher le système de fichiers entier. Cependant, parfois vous voulez juste trouver où se trouve une commande. C’est là que which
entre en jeu.
which
ne fait qu’une chose, mais elle le fait bien. Étant donné le nom d’une commande, qui vous dira où le fichier de cette commande réside dans le système de fichiers.
Imaginons que nous voulons savoir où réside la commande firefox
. Nous pouvons simplement exécuter ce qui suit pour le découvrir:
$ which firefox/usr/bin/firefox
Pourquoi voudriez-vous jamais rechercher spécifiquement une commande ? Imaginez que vous avez du code qui doit remplacer une ancienne commande. Vous devez vraiment supprimer l’ancienne (je la renomme généralement au même nom suivi de « .bak » pour la conserver au cas où j’en aurais besoin) avant de mettre la nouvelle à sa place. which
vous aidera à trouver le fichier rapidement et facilement afin que vous n’ayez pas à chercher partout pour le trouver.
whereis
La commande whereis
est similaire à which mais va un peu plus loin. Non seulement elle vous indique où se trouve le fichier exécutable, mais elle localisera également le source, la page de manuel et les autres répertoires associés.
Poursuivant l’exemple which
, interrogeons whereis
sur la commande firefox
:
$ whereis firefoxfirefox: /usr/bin/firefox /usr/lib/firefox /etc/firefox /usr/share/man/man1/firefox.1.gz
Cela m’a aidé à trouver /usr/lib/firefox/plugins
plus tôt en travaillant sur la solution pour Flash, car cet emplacement est celui où sont stockés les modules complémentaires globaux pour Firefox.
find
find
est l’outil de recherche ultime, le couteau suisse de la recherche Linux si vous voulez. find
peut tout faire, de la recherche de fichiers basée sur les dernières heures de modification, les propriétaires et les groupes, les permissions, le type (fichier, répertoire, lien symbolique, etc), si le fichier est lisible/inscriptible/exécutable par l’utilisateur actuel, la taille du fichier, si le fichier ou le répertoire est vide, et bien plus encore. Vous pouvez également rechercher des correspondances par expression régulière.
Lorsque vous utilisez cet outil en combinaison avec la commande xargs
(que je devrai couvrir une autre fois), vous pouvez faire des choses vraiment étonnantes sur la ligne de commande. Imaginez être en mesure de rechercher récursivement dans le répertoire actuel les fichiers se terminant par « .bak » dont la dernière modification remonte à plus de 100 jours, puis de les supprimer avec une seule commande:
$ find . -name '*.bak' -type f -mtime +100 -print0 | xargs -0 /bin/rm -f
Cela vous paraîtra très complexe au début, mais lorsque vous maîtriserez l’art d’utiliser find
, cela deviendra une seconde nature. Bientôt, vous vous demanderez comment vous avez pu chercher des choses sans elle.
Pour être franc, il y a beaucoup plus à trouver que ce que je suis prêt à couvrir et il y a beaucoup, beaucoup de grandes introductions à l’outil qui font un meilleur travail que je le ferais. Donc, je vais simplement vous indiquer trois grandes références qui peuvent être utilisées pour démarrer avec find.
- Exemples d’utilisation de la commande Linux find
- (Je m’excuse d’avance pour les couleurs horribles) Tutoriel de la commande Unix/Linux « find »
- Utilisation de la commande find
Bonne recherche.
Je vous ai aidé ?
- Envoyez-moi un tuyau via Paypal.
- Aidez à l’hébergement de ce site avec mon code de référence Linode.