Android

Comment trouver des fichiers sous Linux en utilisant la ligne de commande

Commandes de base Linux - Ep47 - archiver et compresser

Commandes de base Linux - Ep47 - archiver et compresser

Table des matières:

Anonim

La commande find est l'un des outils les plus puissants de l'arsenal des administrateurs système Linux. Il recherche les fichiers et les répertoires dans une hiérarchie de répertoires en fonction d'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 la commande find pour rechercher des fichiers et des répertoires en fonction de leurs autorisations, type, date, propriété, taille, etc. Il peut également être utilisé en combinaison avec d'autres outils tels que grep ou sed .

Syntaxe de la commande Linux find

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

find

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

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

Jetons un œil à l'exemple suivant:

find -L /var/www -name "*.js"

  • L'option -L (options) indique à la commande find de suivre les liens symboliques. Le /var/www (chemin…) spécifie le répertoire qui sera recherché. (Expression) -name "*.js indique à find de rechercher les 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 la commande find . Pour rechercher un fichier par son nom, l'option -name suivi le nom du fichier que vous recherchez.

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

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

Pour exécuter une recherche ne -iname casse, modifiez l'option -name avec -iname :

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

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

Rechercher des fichiers par 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 .log.gz /var/log/nginx , vous pouvez utiliser:

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

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

Pour trouver tous les fichiers qui ne correspondent pas à l'expression *.log.gz vous pouvez utiliser l'option -not . Par exemple, pour rechercher tous les fichiers qui ne se terminent pas par *.log.gz vous devez utiliser:

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 l'option -type 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 : périphériques de bloc p : canal nommé (FIFO) s : socket

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

find. -type d

L'exemple courant serait de modifier récursivement les autorisations de fichier de site Web en 644 et les autorisations de répertoire en 755 à l'aide de la commande chmod :

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, transmettez le paramètre -size 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 dans le /tmp :

find /tmp -type f -size 1024c

La commande find 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 de moins de 1MB dans le répertoire de travail actuel. Remarquez le signe moins - avant la valeur de taille:

find. -type f -size -1M

find. -type f -size +1M

Vous pouvez même rechercher des fichiers dans une plage de tailles. 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

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

Comme pour 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é l'un des fichiers de configuration de pigeonnier, mais vous avez oublié lequel. Vous pouvez facilement filtrer tous les fichiers dans le répertoire /etc/dovecot/conf.d qui se termine par .conf et qui ont été modifiés au cours des cinq derniers jours avec:

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

Voici un autre exemple de filtrage des fichiers en fonction de la date de modification à l'aide de l'option -daystart . La commande ci-dessous répertorie tous les fichiers du répertoire /home qui ont été modifiés il y a 30 jours ou plus:

find /home -mtime +30 -daystart

Rechercher des fichiers par autorisations

L'option -perm 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 dans le répertoire /var/www/html , vous utiliseriez:

find /var/www/html -perm 644

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

Lorsque slash / 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.

Considérez l'exemple de commande suivant:

find. -perm /444

La commande ci-dessus fera correspondre 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, le fichier doit correspondre au moins aux bits spécifiés. La commande suivante recherchera les fichiers autorisés à lire et à écrire pour le propriétaire et le groupe et lisibles par les autres utilisateurs:

find. -perm -664

Rechercher des fichiers par propriétaire

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

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

find / -user linuxize

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

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

Rechercher et supprimer des fichiers

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

Assurez-vous que vous utilisez 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 l'option -delete .

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

find /var/log/ -name `*.temp` -delete Utilisez l'option -delete avec une extrême prudence. La ligne de commande find est évaluée comme une expression et si vous ajoutez d' -delete option -delete , la commande supprimera tout sous les 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 identiques à rmdir .

Conclusion

Nous vous avons montré comment utiliser la commande find avec différentes 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 la page de manuel find et découvrir toutes les autres options puissantes de la commande find .

trouver un terminal