GNU/Linux >> Linux Esercitazione >  >> Linux

Trova:Prune non ignora il percorso specificato?

Devo escludere .git dal mio find ricerca. Per raggiungere questo obiettivo, sto usando il -path ./.git -prune interruttore:

$ find . -path ./.git -prune -o ( -type f -o -type l -o -type d ) | grep '.git'
./.git

Tuttavia, anche se questo salta il contenuto della directory .git, elenca la directory stessa. Funziona quando aggiungo -path ./.git -prune -o -print -a

find . -path ./.git -prune -o -print -a ( -type f -o -type l -o -type d ) | grep '.git'

Perché è necessario. Ho pensato che entrambi i comandi avrebbero dovuto avere lo stesso output. La seconda sintassi è piuttosto brutta.

Risposta accettata:

L'man pagina per find dà:

-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.

Quindi nel primo esempio non è così che -path ./.git -prune non è vero e quindi l'azione predefinita (-print ) non verrebbe chiamato, quindi la riga viene stampata.


Linux
  1. errore:src refspec main non corrisponde a nessun [GIT]

  2. Comando non trovato in Bash risolto

  3. Perché Sudo ignora gli alias?

  4. Perché Find non accetta '-exec Cp {} Dir +'?

  5. Vsftpd non elenca il contenuto di una directory?

trova:comando non trovato

Perché find -exec mv {} ./target/ + non funziona?

Come trovare il percorso di installazione di git su Mac o Linux?

I comandi Git personalizzati da PATH non funzionano

Perché questa espressione regolare non funziona su Linux?

La ripetizione automatica non funziona