introduction
Il y a cinq commandes de recherche de fichiers sous Linux: whereis
, locate
, which
, type
et find
. Chacun d'eux a ses propres caractéristiques et est conçu pour des scénarios de recherche particuliers. Ce guide vous présentera chaque commande et montrera des exemples d'utilisation. Pour plus d'informations sur l'une de ces commandes, il est préférable de consulter la page de manuel appropriée.
whereis
La whereis
commande est utilisée pour rechercher les fichiers binaires, le code source et les pages de manuel en ligne dans plusieurs répertoires d'installation standard pour tout nom de programme spécifié.
Parce whereis
qu'il ne recherche pas tous les emplacements de votre système, aucun fichier de ces répertoires spécifiques ne sera trouvé. Pour la même raison, vous obtiendrez rapidement votre résultat de recherche, qu'il soit trouvé ou non.
De plus, il ne recherchera pas les commandes qui sont intégrées directement dans le shell.
Par exemple, si vous souhaitez trouver des informations sur la ls
commande, exécutez la commande suivante sur votre terminal:
whereis ls
Vous obtiendrez des commentaires comme:
ls: /bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
Dans le résultat, /bin/ls
c'est le binaire que vous souhaitez localiser, les deux autres sont des pages de manuel pour le ls
programme, aucun code source pour le ls
programme n'a été trouvé.
Copiez le /bin/ls
fichier dans votre répertoire personnel et dans le /usr/bin
répertoire, puis réexécutez la whereis
commande:
cp /bin/ls ~
cp /bin/ls /usr/bin/ls
whereis ls
Comme vous le voyez, seulement /bin/ls
et /usr/bin/ls
ont été trouvés dans le résultat de la recherche. Le ls
programme de votre répertoire personnel est introuvable, car votre répertoire personnel ne fait pas partie de ces répertoires d'installation standard.
ls: /bin/ls /usr/bin/ls /usr/share/man/man1/ls.1.gz /usr/share/man/man1p/ls.1p.gz
Si vous exécutez la commande suivante:
whereis cd
Vous verrez une sortie similaire à la ligne ci-dessous. Aucun fichier binaire n'a été découvert car il cd
s'agit d'une commande intégrée du shell.
cd: /usr/share/man/man1/cd.1.gz /usr/share/man/man1p/cd.1p.gz
locate
La locate
commande est utilisée pour rechercher des fichiers par nom à l'aide d'une base de données ( /var/lib/mlocate/mlocate.db
). Cette base de données est essentiellement un instantané de la disposition de votre système de fichiers. Tous les enregistrements de cette base de données qui correspondent à votre requête seront répertoriés dans le résultat de la recherche. Par défaut, la locate
commande utilisera votre requête pour faire correspondre n'importe quelle partie du nom complet de chaque enregistrement, y compris le nom du chemin. Par conséquent, le nombre de fichiers correspondants dans le résultat de la recherche peut être supérieur à ce que vous attendiez.
À mesure que la base de données devient obsolète, le résultat de la recherche de la locate
commande devient moins précis. Vous pouvez remarquer des fichiers qui n'existent plus, ou vous ne verrez pas de correspondances pour les fichiers nouvellement créés. Par défaut, la mlocate.db
base de données est automatiquement mise à jour une fois par jour. Vous pouvez utiliser la updatedb
commande pour la mettre à jour manuellement.
Parce que la recherche est effectuée sur la base de données au lieu du système de fichiers, la vitesse de recherche est très rapide.
Si vous exécutez la commande suivante:
locate ls
Vous obtiendrez de nombreux enregistrements au lieu du résultat attendu.
Afin de rendre le résultat de la recherche plus précis, vous pouvez utiliser l' -b
indicateur pour restreindre la plage de recherche, en utilisant votre requête pour faire correspondre uniquement le nom de base de chaque enregistrement:
locate -b "\ls"
Cette fois, vous obtiendrez l'emplacement de chaque fichier appelé exactement ls
sur votre système de fichiers:
/bin/ls
which
La which
commande recherchera la commande que vous avez spécifiée dans la valeur de la variable d'environnement PATH
et retournera le premier résultat par défaut. Si vous interrogez un alias, la which
commande déterminera la commande réelle de l'alias avant d'effectuer votre recherche.
La which
commande est également très rapide en raison de sa simplicité.
L'utilisation de la which
commande est simple:
which your_command
Si vous souhaitez afficher toutes les commandes correspondantes au lieu de la première, utilisez l' -a
indicateur:
which -a your_command
Voici un exemple de recherche d'une commande qui a été aliasée:
which ll
Le résultat de la recherche serait:
alias ll='ls -l --color=auto'
/bin/ls
type
Par défaut, la type
commande indiquera comment un nom de commande sera interprété. Les résultats possibles incluent un alias, un mot-clé, une fonction, une fonction intégrée ou un fichier. Tout comme la whereis
commande, la type
commande ne recherchera que dans plusieurs répertoires d'installation standard pour répondre à votre requête.
Quelques exemples pour taper différentes commandes:
Une commande intégrée au shell:
type cd
cd is a shell builtin
Un fichier binaire sur le système de fichiers:
type sudo
sudo is /usr/bin/sudo
Un alias:
type ls
ls is aliased to `ls --color=auto'
find
Parmi les cinq commandes de recherche de fichiers présentées dans ce didacticiel, la find
commande est la plus puissante. C'est aussi le plus lent. Contrairement aux quatre autres commandes, la find
commande recherchera réellement votre fichier sur l'ensemble du système de fichiers, un i-nœud par un i-nœud. Avec la find
commande, vous pouvez utiliser des critères de requête sophistiqués pour trouver tous les fichiers dont vous avez besoin, même exécuter des actions supplémentaires sur les fichiers trouvés.
Les critères de recherche de la find
commande sont trop sophistiqués pour être expliqués dans un article aussi court, voici quelques exemples à la place.
Format de base de la find
commande:
find [path] [option] [action]
Pour rechercher tous les fichiers dans le répertoire de travail et tous ses sous-répertoires:
find
Pour rechercher un fichier appelé aaa
dans votre répertoire personnel et tous ses sous-répertoires:
find ~ -name 'aaa'
Pour rechercher tous les fichiers du système de fichiers qui ont été modifiés au cours des dernières 24 heures:
find / -mtime 0
Pour rechercher tous les fichiers du répertoire Web et tous ses sous-répertoires appartenant à l'utilisateur nginx
:
find /usr/share/nginx/html/ -user nginx
Pour rechercher tous les fichiers du répertoire de travail dont les autorisations sont 0744
:
find -perm -0744
Pour rechercher un fichier portant le nom aaa
dans le répertoire de travail et répertorier ses informations détaillées:
find -name 'aaa' -exec ls -l {} \;