GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Finden:Prune ignoriert den angegebenen Pfad nicht?

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.


Linux
  1. Fehler:src refspec main stimmt mit keinem [GIT] überein

  2. Vsftpd listet den Inhalt eines Verzeichnisses nicht auf?

  3. Warum funktioniert `exit &` nicht?

  4. find:Befehl nicht gefunden

  5. Wie finde ich den Installationspfad von Git in Mac oder Linux?

Warum funktioniert find -exec mv {} ./target/ + nicht?

Wie führt man eine For-Each-Schleife über alle Dateien unter einem angegebenen Pfad aus?

Wie finde ich den Pfad HADOOP_HOME unter Linux?

Wie bekomme ich tree -a dazu, .git-Verzeichnisse zu ignorieren?

Benutzerdefinierte Git-Befehle von PATH funktionieren nicht

Warum funktioniert diese Regex nicht unter Linux?