GNU/Linux >> Znalost Linux >  >> Linux

Najít:Prune neignoruje zadanou cestu?

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
  1. chyba:src refspec main neodpovídá žádnému [GIT]

  2. Proč „ukončit &“ nefunguje?

  3. Proč nefunguje find -exec mv {} ./target/ +?

  1. Jak provést smyčku pro každého přes všechny soubory pod zadanou cestou?

  2. jak najít cestu HADOOP_HOME na Linuxu?

  3. Jak najít instalační cestu git v Mac nebo Linuxu?

  1. Jak přimět strom -a, aby ignoroval adresáře .git?

  2. Vlastní příkazy Git z PATH nefungují

  3. ldd nenajde cestu, Jak přidat