GNU/Linux >> Tutoriels Linux >  >> Linux

Rechercher la commande sous Linux (Rechercher des fichiers et des répertoires)

Le find La commande est l'un des outils les plus puissants de l'arsenal des administrateurs système Linux. Il recherche des fichiers et des répertoires dans une hiérarchie de répertoires basée sur une expression donnée par l'utilisateur et peut effectuer une action spécifiée par l'utilisateur sur chaque fichier correspondant.

Vous pouvez utiliser le find commande pour rechercher des fichiers et des répertoires en fonction de leurs autorisations, de leur type, de leur date, de leur propriété, de leur taille, etc. Il peut également être combiné avec d'autres outils tels que grep ou sed .

find Syntaxe de commande #

La syntaxe générale de find commande est la suivante :

find [options] [path...] [expression]
  • Les options L'attribut contrôle le traitement des liens symboliques, les options de débogage et la méthode d'optimisation.
  • Le path... L'attribut définit le ou les répertoires de départ où find recherchera les fichiers.
  • L'expression L'attribut est composé d'options, de modèles de recherche et d'actions séparés par des opérateurs.

Pour rechercher des fichiers dans un répertoire, l'utilisateur invoquant la fonction find la commande doit avoir des autorisations de lecture sur ce répertoire.

Prenons l'exemple suivant :

find -L /var/www -name "*.js"
  • L'option -L (options) indique au find commande pour suivre les liens symboliques.
  • Le /var/www (chemin…) spécifie le répertoire qui sera recherché.
  • L'(expression) -name "*.js dit find pour rechercher des fichiers se terminant par .js (fichiers JavaScript).

Rechercher des fichiers par nom #

La recherche de fichiers par nom est probablement l'utilisation la plus courante de find commande. Pour trouver un fichier par son nom, utilisez le -name suivi du nom du fichier que vous recherchez.

Par exemple, pour rechercher un fichier nommé document.pdf dans le /home/linuxize répertoire, vous utiliseriez la commande suivante :

find /home/linuxize -type f -name document.pdf

Pour exécuter une recherche insensible à la casse, modifiez le -name option avec -iname :

find /home/linuxize -type f -iname document.pdf

La commande ci-dessus correspondra à "Document.pdf", "DOCUMENT.pdf" ..etc.

Rechercher des fichiers par numéro d'extension

La recherche de fichiers par extension est identique à la recherche de fichiers par nom. Par exemple, pour trouver tous les fichiers se terminant par .log.gz dans le /var/log/nginx répertoire, vous taperez :

find /var/log/nginx -type f -name '*.log.gz'

Il est important de mentionner que vous devez soit citer le modèle, soit échapper l'astérisque * symbole avec barre oblique inverse \ afin qu'il ne soit pas interprété par le shell lorsque vous utilisez le caractère générique.

Pour trouver tous les fichiers qui ne correspondent pas à la regex *.log.gz vous pouvez utiliser le -not option. Par exemple, pour trouver tous les fichiers qui ne se terminent pas par *.log.gz vous utiliseriez :

find /var/log/nginx -type f -not -name '*.log.gz'

Rechercher des fichiers par type #

Parfois, vous devrez peut-être rechercher des types de fichiers spécifiques tels que des fichiers normaux, des répertoires ou des liens symboliques. Sous Linux, tout est un fichier.

Pour rechercher des fichiers en fonction de leur type, utilisez le -type option et l'un des descripteurs suivants pour spécifier le type de fichier :

  • f :un fichier normal
  • d :répertoire
  • l :lien symbolique
  • c :périphériques de caractères
  • b  :bloquer les appareils
  • p :canal nommé (FIFO)
  • s :prise

Par exemple, pour trouver tous les répertoires du répertoire de travail courant, vous utiliserez :

find . -type d

L'exemple courant serait de modifier de manière récursive les autorisations du fichier du site Web en 644 et les autorisations de répertoire à 755 en utilisant le chmod commande :

find /var/www/my_website -type d -exec chmod 0755 {} \;find /var/www/my_website -type f -exec chmod 0644 {} \;

Rechercher des fichiers par taille #

Pour rechercher des fichiers en fonction de la taille du fichier, passez le -size paramètre avec les critères de taille. Vous pouvez utiliser les suffixes suivants pour spécifier la taille du fichier :

  • b :blocs de 512 octets (par défaut)
  • c :octets
  • w :mots de deux octets
  • k : Kilo-octets
  • M :Mégaoctets
  • G :Gigaoctets

La commande suivante trouvera tous les fichiers d'exactement 1024 octets à l'intérieur du /tmp répertoire :

find /tmp -type f -size 1024c

Le find La commande vous permet également de rechercher des fichiers dont la taille est supérieure ou inférieure à une taille spécifiée.

Dans l'exemple suivant, nous recherchons tous les fichiers inférieurs à 1MB dans le répertoire de travail courant. Remarquez le moins - symbole avant la valeur de taille :

find . -type f -size -1M

Si vous souhaitez rechercher des fichiers dont la taille est supérieure à 1MB , alors vous devez utiliser le plus + symbole :

find . -type f -size +1M

Vous pouvez même rechercher des fichiers dans une plage de taille. La commande suivante trouvera tous les fichiers entre 1 et 2MB :

find . -type f -size +1M -size 21M

Rechercher des fichiers par date de modification #

Le find La commande peut également rechercher des fichiers en fonction de leur dernière modification, accès ou heure de changement.

Comme lors de la recherche par taille, utilisez les symboles plus et moins pour "supérieur à" ou "inférieur à".

Disons qu'il y a quelques jours, vous avez modifié un des fichiers de configuration de dovecot, mais vous avez oublié lequel. Vous pouvez facilement filtrer tous les fichiers sous le /etc/dovecot/conf.d répertoire qui se termine par .conf et a été modifié au cours des cinq derniers jours :

find /etc/dovecot/conf.d -name "*.conf" -mtime 5

Voici un autre exemple de filtrage de fichiers basé sur la date de modification en utilisant le -daystart option. La commande ci-dessous listera tous les fichiers dans /home répertoire qui ont été modifiés 30 il y a plus de jours :

find /home -mtime +30 -daystart

Rechercher des fichiers par numéro d'autorisation

Le -perm L'option vous permet de rechercher des fichiers en fonction des autorisations de fichier.

Par exemple, pour trouver tous les fichiers avec des autorisations d'exactement 775 à l'intérieur du /var/www/html répertoire, vous utiliseriez :

find /var/www/html -perm 644

Vous pouvez préfixer le mode numérique avec moins - ou barre oblique / .

Lorsque barre oblique / est utilisé comme préfixe, alors au moins une catégorie (utilisateur, groupe ou autres) doit avoir au moins les bits respectifs définis pour qu'un fichier corresponde.

Prenons l'exemple de commande suivant :

find . -perm /444

La commande ci-dessus correspondra à tous les fichiers avec des autorisations de lecture définies pour l'utilisateur, le groupe ou d'autres.

Si moins - est utilisé comme préfixe, alors pour que le fichier corresponde, au moins les bits spécifiés doivent être définis. La commande suivante recherchera les fichiers disposant d'une autorisation de lecture et d'écriture pour le propriétaire et le groupe et qui sont lisibles par d'autres utilisateurs :

find . -perm -664

Rechercher des fichiers par numéro de propriétaire

Pour rechercher des fichiers appartenant à un utilisateur ou à un groupe particulier, utilisez le -user et -group options.

Par exemple, pour rechercher tous les fichiers et répertoires appartenant à l'utilisateur linuxize , vous exécuteriez :

find / -user linuxize

Voici un exemple concret. Supposons que vous souhaitiez rechercher tous les fichiers appartenant à l'utilisateur www-data et changer la propriété des fichiers correspondants de www-data en nginx :

find / -user www-data -type f  -exec chown nginx {} \;

Rechercher et supprimer des fichiers #

Pour supprimer tous les fichiers correspondants, ajoutez le -delete option à la fin de l'expression de correspondance.

Assurez-vous d'utiliser cette option uniquement lorsque vous êtes sûr que le résultat correspond aux fichiers que vous souhaitez supprimer. C'est toujours une bonne idée d'imprimer les fichiers correspondants avant d'utiliser le -delete option.

Par exemple, pour supprimer tous les fichiers se terminant par .temp depuis le /var/log/ , vous utiliseriez :

find /var/log/ -name `*.temp` -delete
Utilisez le -delete option avec une extrême prudence. Le find la commande est évaluée comme une expression et si vous ajoutez le -delete option d'abord, la commande supprimera tout ce qui se trouve en dessous des points de départ que vous avez spécifiés.

En ce qui concerne les répertoires, find ne peut supprimer que les répertoires vides, comme rmdir .

Conclusion #

Nous vous avons montré comment utiliser le find commande avec diverses options et critères.

Cet article devrait vous donner une compréhension fondamentale de la façon de localiser des fichiers sur vos systèmes Linux. Vous pouvez également visiter le find page de manuel et découvrez toutes les autres options puissantes de find commande.

Si vous avez des questions ou des remarques, veuillez laisser un commentaire ci-dessous.


Linux
  1. Rechercher des fichiers et des répertoires sous Linux avec la commande find

  2. Comment trouver les meilleurs répertoires et fichiers (espace disque) sous Linux

  3. Trouver des fichiers et des répertoires sous Linux comme un pro

  4. Comment supprimer des fichiers et des répertoires sous Linux à partir de la ligne de commande

  5. Linux Supprimer des fichiers et des répertoires

Comment compresser des fichiers et des répertoires sous Linux

Comment déplacer des fichiers et des répertoires sous Linux (commande mv)

Commande Rm sous Linux

3 façons de trouver des fichiers et des répertoires sous Linux

Trouvez facilement des fichiers et des répertoires sur Linux

4 façons de transférer des fichiers et des répertoires sous Linux