Ich muss .git
ausschließen aus meinem find
Suche. Um das zu erreichen, verwende ich den -path ./.git -prune
Schalter:
$ find . -path ./.git -prune -o ( -type f -o -type l -o -type d ) | grep '.git'
./.git
Obwohl dies den Inhalt des .git-Verzeichnisses überspringt, wird das Verzeichnis selbst aufgelistet. Es funktioniert, wenn ich -path ./.git -prune -o -print -a
hinzufüge
find . -path ./.git -prune -o -print -a ( -type f -o -type l -o -type d ) | grep '.git'
Warum ist das notwendig. Ich dachte, dass beide Befehle die gleiche Ausgabe haben sollten. Die zweite Syntax ist ziemlich hässlich.
Akzeptierte Antwort:
Der man
Seite für find
ergibt:
-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.
Im ersten Beispiel ist es also nicht so, dass -path ./.git -prune
ist unwahr und daher die Standardaktion (-print
) nicht aufgerufen, daher wird die Zeile ausgegeben.