web-dev-qa-db-fra.com

trouver sans récursion

Est-il possible d’utiliser la commande find d’une manière qui ne déclenche pas de récurrence dans les sous-répertoires? Par exemple,

DirsRoot
  |-->SubDir1
  |    |-OtherFile1
  |-->SubDir2
  |    |-OtherFile2
  |-File1
  |-File2

Et le résultat de quelque chose comme find DirsRoot --donotrecuourse -type f sera seulement File1, File2?

231
filippo

Je pense que vous obtiendrez ce que vous voulez avec l'option -maxdepth 1, en fonction de votre structure de commande actuelle. Sinon, vous pouvez essayer de regarder page de manuel pour find.

Entrée pertinente (pour des raisons de commodité):

-maxdepth levels
          Descend at most levels (a non-negative integer) levels of direc-
          tories below the command line arguments.   `-maxdepth  0'  means
          only  apply the tests and actions to the command line arguments.

Vos options sont essentiellement:

find DirsRoot/* -maxdepth 0 -type f #This does not show hidden files

Ou:

find DirsRoot/ -maxdepth 1 -type f #This does show hidden files
342
eldarerathis

Je crois que vous cherchez -maxdepth 1.

31
waffle paradox

Si vous recherchez une solution compatible POSIX:

cd DirsRoot && find . -type f -print -o -name . -o -Prune

- maxdepth n'est pas une option compatible POSIX.

17
sqr163