Existe-t-il un moyen d'empêcher find de fouiller de manière récursive dans les sous-répertoires ?

StackOverflow https://stackoverflow.com/questions/27077

  •  09-06-2019
  •  | 
  •  

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.)

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top