Sur la recherche d'une find
solution similaire , j'ai découvert l'explication utile sur la façon d'utiliser l'option '-prune' de 'trouver' dans sh? par Laurence Gonsalves .
Vous pouvez utiliser quelque chose comme:
find . \( -type d -name .hg -prune \) -o \( -type f -name "foo" -print \)
ou (sans le nom)
find . \( -type d -name .hg -prune \) -o \( -type f -print \)
Les (échappées) entre parenthèses \(
et \)
regrouper les tests ( type
et name
) et les actions correspondantes ( prune
et print
, respectivement) , ainsi que gauche et à droite de l'OR ( -o
).
Étant donné -o
que la priorité est inférieure à la juxtaposition, vous pouvez omettre les parenthèses si vous le souhaitez. De nombreuses find
implémentations vous permettent également de sauter la finale -print
.
find . -type d -name .hg -prune -o -type f -name "foo" -print
-prune
intérieur du premier ensemble de supports et le-type f -print
dans un deuxième ensemble, juste pour rendre les opérations et / ou plus évidentes, mais sinon cela me semble parfaitement clair.Jetez un œil à
ack
: http://betterthangrep.com/En plus d'avoir un ensemble raisonnable de dossiers exclus par défaut (.hg est une exclusion par défaut par exemple), il est facile d'exclure de nouveaux dossiers:
Pour ramener cela à votre cas d'utilisation où vous recherchez une liste de fichiers, vous utiliseriez l'
-f
option, comme dans:Je suis passé de l'écriture de commandes de recherche / recherche alambiquées à de simples commandes d'acquittement.
Conseil: placez les options de ligne de commande couramment utilisées (dossiers exclus par exemple) dans un fichier .ackrc.
la source
find | less
de la question, l'OP recherche une simple liste de fichiers. Comment cela aide-t-il?tu peux essayer
la source
.directory