Maison  >  Article  >  Opération et maintenance  >  Pourquoi find sous Linux ne recherche-t-il pas le sous-répertoire spécifié ?

Pourquoi find sous Linux ne recherche-t-il pas le sous-répertoire spécifié ?

WBOY
WBOYoriginal
2022-07-12 15:30:354643parcourir

Sous Linux, vous pouvez utiliser le paramètre "-prune" de la commande find pour que find ne recherche pas le sous-répertoire spécifié lors de la recherche de fichiers. La commande find est utilisée pour rechercher des fichiers dans le répertoire spécifié. Le paramètre de filtrage est défini sur "-prune". Le filtrage nécessite uniquement que le paramètre de chemin à ignorer suive immédiatement le chemin recherché, sinon ce paramètre ne fonctionnera pas. La syntaxe est "trouver le chemin de recherche-le chemin du sous-répertoire à ne pas trouver-prune". ..".

Pourquoi find sous Linux ne recherche-t-il pas le sous-répertoire spécifié ?

L'environnement d'exploitation de ce tutoriel : système linux7.3, ordinateur Dell G3.

Pourquoi find sous Linux ne recherche-t-il pas le sous-répertoire spécifié ?

Lors d'une recherche dans Linux find, il est parfois nécessaire d'ignorer certains répertoires et de ne pas rechercher. Vous pouvez utiliser le paramètre -prune pour filtrer, mais vous devez faire attention au. paramètres de chemin à ignorer immédiatement après le chemin de recherche, sinon ce paramètre ne fonctionnera pas.

L'exemple est le suivant :

Ce qui suit est une recherche spécifiée pour tous les fichiers du répertoire /home/carryf, mais le chemin de /home/carryf/astetc sera ignoré :

find /home/carryf -path "/home/carryf/astetc" -prune -o -type f -print

Si vous effectuez une recherche par le nom du fichier, il s'agit de :

find /home/carryf -path "/home/carryf/astetc" -prune -o -type f -name "cdr_*.conf" -print

Que faire si vous souhaitez ignorer plus de deux chemins ?

find /home/carryf −path"/home/carryf/astetc"−o−path"/home/carryf/etc" -prune -o -type f  -print
find /home/carryf −path"/home/carryf/astetc"−o−path"/home/carryf/etc" -prune -o -type f  -name "cdr_*.conf" -print

Notez qu'il y a des espaces avant et après.

Pour trouver le contenu d'un fichier, l'instruction suivante peut résoudre le problème des répertoires avec des espaces :

find ./ -name "MySQL*" -print0  |xargs -0 grep "SELECT lead_id FROM vicidial_list where vendor_lead_code"

Si le répertoire n'a pas d'espaces, il peut être exécuté sous la forme suivante :

find ./ -name "mysql*"  |xargs  grep "SELECT lead_id FROM vicidial_list where vendor_lead_code"

Agrandir les connaissances

Commande Linux find Utilisé pour rechercher des fichiers dans un répertoire spécifié. Toute chaîne précédant le paramètre sera traitée comme le nom du répertoire dans lequel rechercher. Si vous utilisez cette commande sans définir de paramètres, la commande find recherchera les sous-répertoires et les fichiers dans le répertoire actuel. Et tous les sous-répertoires et fichiers trouvés seront affichés.

Syntaxe

find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;

Description du paramètre :

find détermine le chemin et l'expression selon les règles suivantes. La partie avant le premier - ( ), ! sur la ligne de commande est le chemin, et ce qui suit est l'expression. Si path est une chaîne vide, le chemin actuel est utilisé. Si expression est une chaîne vide, -print est utilisé comme expression par défaut. Il existe jusqu'à vingt ou trente options disponibles dans

expression, et seules les plus couramment utilisées sont présentées ici.

-mount, -xdev : vérifie uniquement les fichiers dans le même système de fichiers que le répertoire spécifié, évitez de lister les fichiers dans d'autres systèmes de fichiers

-amin n : lu au cours des n dernières minutes

-anewer file : un fichier qui a été lu plus tard que le fichier file

-atime n : un fichier qui a été lu au cours des n derniers jours

-cmin n : un fichier qui a été modifié au cours des n dernières minutes

-cnewer file : que File file Fichier mis à jour

-ctime n : Fichier créé au cours des n derniers jours

-mtime n : Fichier modifié au cours des n derniers jours

-empty : Fichier vide -gid n ou -nom du groupe : gid Oui n ou le nom du groupe est nom

-ipath p, -path p : le fichier dont le nom de chemin correspond à p, ipath ignorera la casse

-name name, -iname name : le fichier dont le nom de fichier correspond à name. iname ignorera la casse

-size n : la taille du fichier est de n unités, b représente un bloc de 512 octets, c représente le nombre de caractères, k représente des kilo-octets et w est de deux octets.

-type c : Le type de fichier est c.

Apprentissage recommandé : Tutoriel vidéo Linux

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn