Potřebuji vyloučit .git
z mého find
Vyhledávání. Abych toho dosáhl, používám -path ./.git -prune
přepínač:
$ find . -path ./.git -prune -o ( -type f -o -type l -o -type d ) | grep '.git'
./.git
I když se tím přeskočí obsah adresáře .git, zobrazí se samotný adresář. Funguje to, když přidám -path ./.git -prune -o -print -a
find . -path ./.git -prune -o -print -a ( -type f -o -type l -o -type d ) | grep '.git'
Proč je to nutné? Myslel jsem, že oba příkazy by měly mít stejný výstup. Druhá syntaxe je docela ošklivá.
Přijatá odpověď:
man
stránku pro find
dává:
-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.
Takže v prvním příkladu to není tak, že -path ./.git -prune
je nepravdivá, a proto je výchozí akce (-print
) nebude voláno, proto se řádek vytiskne.
Linux – Selhání nastavení afinity k běžícímu procesu se sadou úloh?
Kombinace mapovacích klíčů s Xmodmap?