Rechercher un fichier
De Wiki de la communauté Mandriva.
Sommaire |
Méthode graphique
C'est la méthode la plus simple et que vous avec déjà probablement trouvé. Ce programme de recherche est disponible par exemple dans le menu de KDE. Puisqu'il est assez intuitif, je ne m'attarde pas trop.
Catfish
Catfish est une interface graphique utilisant les différents outils de recherche disponibles sous GNU/Linux tels que find, locate, beagle où encore slocate.
Méthode textuelle
Les autres méthodes seront des méthodes qui utilisent la console. Ne fuyez pas !
find
Recherche d'un fichier
find va effectuer une recherche directement dans un dossier. La syntaxe est la suivante :
find ''chemin_du_repertoire'' -name ''nom_du_fichier''
ex :
cherchera le fichier ma_photo.jpg dans mon dossier personnel. On peut remplacer /home/moi/ par un . Si on veut cherche dans autre dossier, on mets cet autre chemin, bien sûr.
Si on veut chercher sur toute l'arborescence :
Ceci est long, et inutile si vous rangez bien vos fichiers. De plus, cette commande lancée en tant qu'utilisateur ne pourra pas voir tous les fichiers.
Recherche d'un répertoire
cherchera non plus un fichier, mais un dossier commençant par trav
Autres options
find comporte de nombreuses options. Je vous conseille la lecture du man :
voir Les manuels de Linux : man et info.
locate : plus véloce
locate effectue une recherche sur tout le disque (en réalité pas tout à fait...) mais en beaucoup plus rapide ! Pourquoi ? plutôt que de travailler quand on lui demande, il travaille seul en cachette pour se faire sa petite liste des choses présentes. Il est malin. Ce travail en cachette est réalisé par updatedb. Ce processus est normalement lancé automatiquement et régulièrement via une tache cron. Il est installé par défaut sur mandriva.
Regardons le fichier de configuration de updatedb (trouvé grâce à un locate :D ) cat /etc/updatedb.conf donne chez moi :
## Mandriva Linux configuration. # # Originally written by Chmouel Boudjnah <chmouel@mandrakesoft.com> # # Modified 20010109 by Francis Galiegue <fg@mandrakesoft.com> # # Fixes by mlord@pobox.com, 20010328 # Which directories to exclude. /home and /root are excluded for privacy, but # YMMV PRUNEPATHS="/proc /tmp /var/tmp /usr/tmp /net /afs /mnt /afs /media /sfs /var/spool/cups /var/spool/squid" # Which filesystems do we exclude from search? PRUNEFS="nfs smbfs ncpfs proc devpts supermount vfat iso9660 udf usbdevfs devfs auto afs sfs"
On voit que sont exclus des PRUNEPATHS (chemins) et des PRUNEFS (système de fichiers). En effet, rien ne sert l'aller chercher des choses dans un /tmp par exemple.
updatedb est lancé via la tache cron : mlocate.cron
whereis
Littéralement : où est... ?
whereis permet de chercher les exécutables comme firefox, nano, cat, vi etc. (et parfois même un poil plus). On l'utilise très simplement :
et on obtient :
firefox: /usr/bin/firefox
L'exécutable, vous l'aurez reconnu c'est /usr/bin/firefox.
Un inconvénient de whereis est qu'il ne détecte ni les alias, ni les fonctions, ni les commandes internes du shell (shell builtins). Pour cela vous devrez utiliser la commande type, très utile lorsque vous créez un alias ou une fonction et souhaitez savoir si son nom est déjà pris. Voir là-dessus cette section.
which
which localise les commandes : comme nano, cat, vi etc.
Différence avec whereis ? whereis cherche partout, which cherche uniquement dans le $PATH de l'utilisateur qui emploie la commande. ( Plus d'informations sur le $PATH )
Exemple : En tant qu'utilisateur (non root) :
urpmi: /usr/bin/urpmi.update /usr/sbin/urpmi.addmedia /usr/sbin/urpmi.update /usr/sbin/urpmi.removemedia /usr/sbin/urpmi /etc/urpmi
Il l'a bien trouvé, on est content.
which: no urpmi in (/usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin/:/usr/games:/usr/lib/qt4/bin:/usr/share/pvm3:/home/gnu/bin:/usr/lib/ssh:/usr/lib/qt4/bin:/usr/share/pvm3)
Il n'a rien trouvé dans mon $PATH. On voit bien qu'il cherche dans le $PATH :
[gnu@localhost Incoming]$ echo $PATH /usr/bin:/bin:/usr/local/bin:/usr/X11R6/bin/:/usr/games:/usr/lib/qt4/bin:/usr/share/pvm3:/home/gnu/bin:/usr/lib/ssh:/usr/lib/qt4/bin:/usr/share/pvm3
Cela ne servait à rien de cherche sur tout le disque car de toute façon, je cherche une commande que je ne pourrai pas lancer...
Un inconvénient de which est qu'il ne détecte ni les alias, ni les fonctions, ni les commandes internes du shell (shell builtins). Pour cela vous devrez utiliser la commande type, très utile lorsque vous créez un alias ou une fonction et souhaitez savoir si son nom est déjà pris. Voir là-dessus la section suivante.
type
Si vous souhaitez créer un alias, ou une fonction sur votre système, il est essentiel d'être certain que son nom n'est pas déjà pris. Pour cela type est parfait.
Evitez d'utiliser which ou whereis à cet usage : les alias, les fonctions et les commandes internes du shell ne seraient pas détectés.
Quelques exemples :
- la commande qui lance la suite bureautique OpenOffice.org :
- un alias créé par Mandriva dans /etc/profile.d/alias.sh :
- une fonction personnelle créée par l'utilisateur dans /etc/bashrc ou ~/.bash_profile - notez que le contenu de la fonction est affiché :
music est une fonction
music ()
{ find ~/Musique/ -type f \( -ipath '*'$1'*.ogg' -o -ipath '*'$1'*.mp[3,4]' \) -print0 | xargs -0\ -r -t vlc
}
- une commande interne du shell :
- une commande qui n'existe pas (du moins pour l'utilisateur qui a lancé type) :


