GNU/Linux >> Tutoriels Linux >  >> Linux

Utilisez Find and Locate pour rechercher des fichiers sous Linux

Cet article présentera deux outils utiles pour rechercher des fichiers dans le système de fichiers Linux. Le premier est le find commande, qui peut être trouvée dans n'importe quelle distribution Linux, et la seconde est locate , qui nécessite une installation.

Rechercher la commande

La commande find fait partie de Linux par défaut. Il propose de multiples paramètres pour affiner votre recherche.

Rechercher par nom

La commande de recherche la plus simple consiste à rechercher par le nom de l'endroit où vous vous trouvez :

$ find -name "FILE_NAME"

Vous pouvez spécifier le répertoire dans lequel vous souhaitez rechercher le fichier :

$ find /home -name my_file.txt
$ find / -name my_other_file.txt

Tenez compte du fait que cette commande est sensible à la casse. Si vous voulez ignorer la casse, utilisez :

$ find -iname "FILE_NAME"

Si vous souhaitez rechercher des fichiers qui ne respectent pas le modèle spécifié, vous pouvez annuler les paramètres de recherche en utilisant le -not paramètre ou \! . Par exemple :

$ find -not -name "FILE_NAME_TO_AVOID"

or

$ find \! -name "FILE_NAME_TO_AVOID"

Rechercher par type de fichier

Le file La commande vous permet également de rechercher des types de fichiers. Certains descripteurs de types de fichiers courants sont :

  • f :fichier normal
  • d :répertoire
  • l :lien symbole
  • c :périphériques de caractères
  • b  :bloquer les appareils

Le type de fichier souhaité va après le -type attribut.

Par exemple, pour trouver tous les fichiers JSON sous le etc répertoire :

$ find /etc -type f -name "*.json"

Rechercher par taille de fichier

Il existe également un paramètre permettant de filtrer le résultat de la recherche en fonction de la taille des fichiers :-size .

Pour les unités de taille, vous pouvez utiliser les suffixes suivants :

  • c :octets
  • k :kilo-octets
  • M :mégaoctets
  • G :gigaoctets
  • b :blocs de 512 octets

Et pour préciser si vous parlez d'une taille exacte, inférieure ou supérieure à utilisez les préfixes suivants :

  • Recherche exacte :pas de préfixe
  • Moins de :- préfixe
  • Supérieur à :+ préfixe

Par exemple, pour trouver les fichiers de 3 gigaoctets sous le répertoire personnel :

$ find /home -size 3G

Pour tous les fichiers de moins de 3 gigaoctets :

$ find /home -size -3G

Fichiers de plus de 3 gigaoctets :

$ find /home -size +3G

Recherche par heure

Vous pouvez également rechercher des fichiers en fonction de leur dernier accès, modification ou changement.

  • Heure d'accès :-atime pour la dernière fois que le fichier a été lu.
  • Heure de modification :-mtime pour la dernière fois que le contenu du fichier a été modifié.
  • Modifier l'heure :-ctime pour la dernière fois où les métadonnées d'inode du fichier ont été modifiées.

Il est également possible de comparer à un fichier de référence pour renvoyer les plus récents :

$ find / -newer file_name

Pour les heures, les paramètres spécifiés sont en jours . Les mêmes préfixes qu'en recherche par taille peuvent être utilisés :

$ find /home -mtime 3
$ find /home -atime -2
$ find /home -ctime +5

Pour rechercher des fichiers en utilisant le temps en minutes, vous pouvez utiliser :

$ find /home -mmin 3

Rechercher par propriétaire et autorisations

Il y a aussi des paramètres pour trouver des fichiers selon leurs propriétaires (-user et -group ) et leurs autorisations (-perm ):

$ find /home -user my_user
$ find /home -group my_group
$ find /home -perm 777

Définir la profondeur de recherche

Lors d'une recherche dans un répertoire, le find renverra tous les fichiers de ce répertoire, même s'ils se trouvent dans d'autres sous-répertoires. Pour contrôler cette profondeur, vous pouvez définir une profondeur maximale, une profondeur minimale ou les deux.

Par exemple, pour rechercher uniquement dans le répertoire supérieur et un niveau de sous-répertoires, vous pouvez définir le -maxdepth paramètre à 2 :

$ find -maxdepth 2 -name my_file

Pour définir la profondeur minimale où find devriez rechercher vous utilisez le -mindepth paramètre :

$ find -mindepth 5 -name my_file

Ces paramètres peuvent être combinés :

$ find -mindepth 4 -maxdepth 7 -name my_file

Exécuter des commandes sur les résultats

Comme vu dans les commandes de profondeur, tous les find les paramètres peuvent être combinés pour obtenir des résultats très spécifiques. Lorsque vous obtenez les résultats souhaités, il est possible d'exécuter des commandes dessus en utilisant le -exec paramètre.

Lorsque vous combinez des paramètres de recherche, vous pouvez également utiliser le -and et -or options pour personnaliser vos critères de recherche. Quand aucun d'entre eux n'est utilisé, le -and est la valeur par défaut.

Par exemple, pour modifier les autorisations sur tous les fichiers sous /my_dir répertoire qui ont actuellement 777 autorisations sur 664, utilisez ce qui suit :

$ cd /my_dir
$ find . -type f -perm 777 -exec chmod 664 {} \;

Outil de localisation

Le locate la commande est une alternative à find . La différence est qu'il utilise une base de données des fichiers du système de fichiers afin qu'il puisse fonctionner plus rapidement. Pour installer le locate outil que vous pouvez utiliser :

  • Pour les distributions Ubuntu/Debian :
$ sudo apt install mlocate`
  • Pour les distributions CentOS/RHEL :
$ sudo yum install mlocate`

Locate utilise une tâche cron pour mettre à jour la base de données quotidiennement, mais elle peut être mise à jour manuellement en utilisant :

$ sudo updatedb

Pour rechercher le "basename", à savoir que la requête est contenue uniquement dans le nom du fichier et non dans le chemin du fichier, utilisez le -b drapeau :

$ locate -b name

Pour trouver des fichiers qui existent encore (après le dernier updatedb appel) utilisez le -e drapeau :

$ locate -e name

Pour les statistiques de la base de données générée, utilisez :

$ locate -S

Conclusion

La recherche de fichiers dans la ligne de commande Linux peut être difficile. Les outils présentés dans cet article permettent de gérer et de rechercher facilement des fichiers. En comprenant les différents paramètres, la recherche peut être aussi précise que l'on le souhaite.

Utilisez l'onglet Commentaires pour faire des commentaires ou poser des questions. Vous pouvez également démarrer une conversation avec nous.


Linux
  1. Comment utiliser la commande 'find' pour rechercher plusieurs noms de fichiers (extensions) sous Linux

  2. Comment rechercher des fichiers par taille et extension ?

  3. Comment utiliser l'interface graphique pour rechercher des fichiers dans Gnome ?

  4. Rechercher rapidement des fichiers sous Linux avec la commande Locate

  5. Des alternatives plus rapides pour trouver et localiser ?

Comment utiliser sed pour rechercher et remplacer une chaîne dans des fichiers

Comment rechercher des fichiers à partir de la ligne de commande Linux

Comment installer et utiliser la commande locate sous Linux

Comment installer et utiliser Okteta pour les fichiers de données RAW sous Linux

Linux recherche une chaîne dans des dossiers et des fichiers avec ack

Trouvez facilement des fichiers et des répertoires sur Linux