mise à jour: 30/11/2020 par ordinateur Hope

dans les systèmes D’exploitation Linux, la commande find peut être utilisée pour rechercher des fichiers et des répertoires sur votre ordinateur. Pour continuer, sélectionnez un lien dans la liste suivante ou parcourez chaque section dans l’ordre.

Remarque

pour utiliser find, commencez par ouvrir une session terminal pour accéder à la ligne de commande.

fonctionnalité de base de find

L’exécution de find sans aucune option produit une liste de tous les fichiers et répertoires Dans et sous le répertoire de travail., Par exemple, si votre répertoire de travail est /home/hope/Documents, l’exécution de find affiche ce qui suit:

  • chaque fichier dans /home/hope/Documents.
  • Chaque sous-répertoire dans /home/espoir/Documents.
  • Chaque fichier dans chacun de ces sous-répertoires.

voyons-le en action., Tout d’abord, vérifions notre répertoire de travail en utilisant la commande pwd:

pwd
/home/hope/Documents

maintenant, courons find sans aucune option:

find

dans cet exemple, nous voyons un total de dix fichiers et quatre sous-répertoires Dans et sous nos Documents dossier.

notez que la sortie commence par un seul point, qui représente le répertoire de travail., Exécuter find sans option revient à spécifier que la recherche doit commencer dans le répertoire de travail, comme ceci:

find .

l’exemple ci-dessus est la « bonne » façon d’utiliser find. Si vous essayez de l’utiliser sur un autre système D’exploitation de type Unix, tel que FreeBSD, la spécification d’un répertoire est requise. C’est une bonne pratique d’utiliser cette forme de la commande.,

spécifier où rechercher

pour lister uniquement les fichiers et sous-répertoires contenus dans le répertoire/home/hope/Documents/images, spécifiez le premier argument de la commande comme suit:

find /home/hope/Documents/images

notez que le chemin complet est également affiché dans les résultats.,

Si notre répertoire de travail est/home/hope/Documents, nous pouvons utiliser la commande suivante, qui trouve les mêmes fichiers:

find ./images

mais cette fois, la sortie reflète l’emplacement de départ de la recherche et ressemble à ceci:

par défaut, la recherche regarde dans chaque sous-répertoire de Si vous souhaitez limiter le nombre de niveaux de sous-répertoire à rechercher, vous pouvez utiliser l’option-maxdepth avec un nombre.

par exemple, spécifier-maxdepth 1 Ne recherche que dans le répertoire où la recherche commence., Si des sous-répertoires sont trouvés, ils sont répertoriés, mais pas recherchés.,

find . -maxdepth 1
../images./bigfiles.txt./gimp-2.8.16.tar.bz2./hp-fanfic./archlinux-2016.02.01-dual.iso

spécifiant-maxdepth 2 recherche le répertoire et un sous-répertoire profond:

find . -maxdepth 2

spécifiant-maxdepth 3 recherche un niveau plus profond que cela:

find . -maxdepth 3

recherche par nom

pour limiter vos résultats de recherche à correspondre uniquement aux fichiers et répertoires qui ont un certain nom, utilisez l’option-Name et mettez le nom entre guillemets:

find . -name "picard.jpg"
./images/memes/picard.jpg

Vous pouvez également utiliser des caractères génériques, Par exemple, pour trouver tous les fichiers dont le nom se termine par .jpg, vous pouvez utiliser un astérisque pour représenter le reste du nom de fichier. Lorsque vous exécutez la commande, le shell globalise le nom du fichier dans tout ce qui correspond au motif:

find . -name "*.jpg"
./images/hp/snape.jpg./images/hp/harry.jpg./images/memes/winteriscoming.jpg./images/memes/picard.jpg

notez que notre commande n’a pas répertorié le fichier dont L’extension (dans ce cas, JPG) est en majuscules. En effet, contrairement à d’autres systèmes d’exploitation, tels que Microsoft Windows, les noms de fichiers Linux sont sensibles à la casse., »>

pour lister uniquement les répertoires et omettre les noms de fichiers, spécifiez-type d:

find . -type d
../images./images/hp./images/memes./hp-fanfic

recherche de fichiers en fonction de la taille

par exemple, pour trouver des fichiers « de plus de 50 kilo-octets », utilisez-size +50k:

find . -size +50k
./images/memes/winteriscoming.jpg./gimp-2.8.16.tar.bz2./archlinux-2016.02.01-dual.iso

pour les fichiers « plus grand que 10 mégaoctets », utilisez-size +10m:

find . -size +10M
./gimp-2.8.16.tar.bz2./archlinux-2016.02.01-dual.iso

pour « plus grand que 1 gigaoctet », utilisez-size +1g:

find . -size +1G
./archlinux-2016.02.01-dual.iso

pour les fichiers dans une certaine plage de taille, utilisez des options à deux tailles., Par exemple, pour trouver des fichiers « plus grands que 10 mégaoctets, mais plus petits que 1 gigaoctet », spécifiez-size +10M-size-1G:

find . -size +10M -size -1G
./gimp-2.8.16.tar.bz2

recherche de fichiers basés sur la modification, l’accès ou le changement d’état

l’option-mtime limite la recherche. Pour spécifier les jours passés, utilisez un nombre négatif., Par exemple, pour trouver uniquement les fichiers qui ont été modifiés au cours des deux derniers jours (il y a 48 heures), utilisez-mtime -2:

find . -mtime -2

l’option-mmin fait la même chose, mais en termes de minutes, pas de jours. Par exemple, cette commande n’affiche que les fichiers modifiés au cours de la dernière demi-heure:

find . -mmin -30

une option similaire est-ctime, qui vérifie la dernière modification de l’état d’un fichier, mesurée en jours. Un changement d’état est un changement dans les métadonnées du fichier. Par exemple, la modification des autorisations d’un fichier est un changement d’état.,

l’option-cmin recherche un changement d’état, mesuré en minutes.

Vous pouvez également rechercher lorsqu’un fichier a été accédé, en d’autres termes, lorsque son contenu ont été consultés récemment. L’option-atime est utilisée pour rechercher des fichiers en fonction de leur temps d’accès le plus récent, mesuré en jours.

l’option-amin effectue la même restriction de recherche, mais mesurée en minutes.

redirection de la sortie vers un fichier texte

Si vous effectuez une recherche très volumineuse, vous voudrez peut-être enregistrer vos résultats de recherche dans un fichier afin de pouvoir les afficher ultérieurement., Vous pouvez le faire en redirigeant votre sortie de recherche vers un fichier:

find . -iname "*.jpg" > images.txt

Vous pouvez ensuite ouvrir vos résultats dans un éditeur de texte, ou les imprimer avec la commande cat.

cat images.txt

Sinon, vous pouvez diriger votre sortie de la commande tee, qui imprime le résultat à l’écran et de les écrire dans un fichier:

find . -size +500M | tee bigfiles.txt
./archlinux-2016.02.01-dual.iso
cat bigfiles.txt
./archlinux-2016.02.01-dual.iso

la Suppression des messages d’erreur

Vous pouvez recevoir le message d’erreur « Permission denied » lorsque vous effectuez une recherche., Par exemple, si vous recherchez le répertoire racine en tant qu’utilisateur normal:

find /

Vous recevrez ce message d’erreur si find tente d’accéder à un fichier que votre compte utilisateur n’a pas l’autorisation de lire. Vous pouvez effectuer la recherche en tant que superutilisateur (root), qui a un accès complet à tous les fichiers du système. Mais il n’est pas recommandé de faire les choses en tant que root, sauf s’il n’y a pas d’autres options.,

Si tout ce que vous avez à faire est de masquer les messages « Permission denied », vous pouvez ajouter 2&>1 | grep-v « Permission denied » à la fin de votre commande, comme ceci:

find / 2>&1 | grep -v "Permission denied"

L’exemple ci-dessus filtre autorisation refusée « messages de votre recherche. Comment?

2>& 1 est une redirection spéciale qui envoie des messages d’erreur à la sortie standard pour rediriger les lignes de sortie combinées vers la commande grep., grep-v effectue ensuite une correspondance inverse sur « Permission denied », affichant uniquement les lignes qui ne contiennent pas cette chaîne.

la redirection et l’utilisation de grep pour filtrer les messages d’erreur est une technique utile lorsque « Permission denied » encombre vos résultats de recherche et que vous ne pouvez pas effectuer la recherche en tant que root.

exemples

find ~/. -name "*.txt" -amin -120

Retrouvez tous les fichiers de votre répertoire personnel et en dessous desquels se terminent l’extension « .txt ». Afficher uniquement les fichiers consultés au cours des deux dernières heures.,

find . -name "*.zip" -size +10M -mtime -3

trouvez tous les fichiers dans le répertoire de travail et ci-dessous dont le nom a l’extension « .zip  » et dont la taille est supérieure à 10 mégaoctets. Afficher uniquement les fichiers dont le contenu a été modifié au cours des 72 dernières heures.

find . -iname "*report*" -type f -maxdepth 2

effectuez une recherche insensible à la casse pour les fichiers qui contiennent le mot « rapport » dans leur nom. Si la recherche trouve un répertoire avec « rapport » dans son nom, ne pas l’afficher. Recherchez uniquement dans le répertoire de travail, et un niveau de répertoire en dessous.,

find / -name "*init*" 2>&1 | grep -v "Permission denied" | tee ~/initfiles.txt

recherchez tous les fichiers du système dont le nom contient « init », en supprimant les messages d’erreur. Afficher les résultats à l’écran et les sortir dans un fichier dans votre répertoire personnel nommé « initfiles.txt ».