Existe-t-il un moyen d'empêcher find de fouiller de manière récursive dans les sous-répertoires ?
Question
Quand je fais:
$ find /
Il recherche l'ensemble du système.
Comment puis-je empêcher cela ?
(Cette question vient d'un "répondre" à une autre question.)
La solution
Bonjour,
Je voulais juste développer la suggestion de Jon d'utiliser -prune.Ce n'est pas l'option de recherche la plus simple à utiliser, par exemple, pour simplement rechercher dans le répertoire courant, la commande find ressemble à :
find . \( -type d ! -name . -prune \) -o \( <the bit you want to look for> \)
cela empêchera find de descendre dans les sous-répertoires de ce répertoire.
Fondamentalement, il est dit "élaguer tout ce qui est un répertoire dont le nom n'est pas ".", c'est-à-direrépertoire actuel."
La commande find évalue de gauche à droite pour chaque élément trouvé dans le répertoire courant donc après l'achèvement du premier élément, c'est-à-direle segment prune, il continuera ensuite avec l'élément correspondant dans votre deuxième expression -o (OR).
HTH.
Bravo, Rob
Autres conseils
Considérer:
-maxdepth n
True if the depth of the current file into the tree is less than
or equal to n.
-mindepth n
True if the depth of the current file into the tree is greater
than or equal to n.
Il serait peut-être préférable d'utiliser des caractères génériques.Par exemple, si vous souhaitez rechercher tous les scripts ksh dans le répertoire courant :
$ ls *.ksh
Utilisez le -prune option.
Vous pouvez même faire
echo /specific/dir/*.jpg
car c'est votre shell qui développe le caractère générique.Dactylographie
ls *.jpg
équivaut à taper
ls foo.jpg bar.jpg
étant donné foo.jpg et bar.jpg sont tous les fichiers qui se terminent par ".jpg" dans le répertoire courant.