Je dois exclure .git
de ma find
chercher. Pour y parvenir, j'utilise le -path ./.git -prune
commutateur :
$ find . -path ./.git -prune -o ( -type f -o -type l -o -type d ) | grep '.git'
./.git
Cependant, même si cela ignore le contenu du répertoire .git, il répertorie le répertoire lui-même. Cela fonctionne lorsque j'ajoute -path ./.git -prune -o -print -a
find . -path ./.git -prune -o -print -a ( -type f -o -type l -o -type d ) | grep '.git'
Pourquoi est-ce nécessaire. Je pensais que les deux commandes devraient avoir la même sortie. La deuxième syntaxe est assez moche.
Réponse acceptée :
L'man
page pour find
donne :
-prune True; if the file is a directory, do not descend into it. If
-depth is given, false; no effect. Because -delete implies
-depth, you cannot usefully use -prune and -delete together.
Donc dans le premier exemple ce n'est pas ainsi que -path ./.git -prune
est faux et donc l'action par défaut (-print
) ne serait pas appelé, donc la ligne est imprimée.