GNU/Linux >> Linux Esercitazione >  >> Linux

Escludi directory in Trova?

Come posso trovare tutti i file e le directory corrispondenti a un modello, esclusa una directory usando find ?

Supponiamo che io abbia la seguente struttura di file;

. foo-exclude-me/ foo.txt foo-exclude-me-not/ foo.txt bar/ foo.txt foobar/ bar.txt foofoo.txt

come potrei ottenere il seguente output usando find :

./bar/foo.txt./bar/foobar./bar/foobar/foofoo.txt./foo-exclude-me-not./foo-exclude-me-not/foo.txt

Ho provato a utilizzare entrambi i seguenti comandi:

trovare . -name 'foo-exclude-me' -prune -o -name 'foo*'find . -nome 'pippo*' ! -percorso './foo-exclude-me/*'

ma entrambi restituiscono questo:

./bar/foo.txt
./bar/foobar
./bar/foobar/foofoo.txt
./foo-exclude-me # << this should be excluded
./foo-exclude-me-not
./foo-exclude-me-not/foo.txt
 

Come posso escludere correttamente il foo-exclude-me directory?

Risposta accettata:

find . -name 'foo-exclude-me' -prune -o -name 'foo*' -print
 

Senza -print , l'azione predefinita implicita si applica a ogni corrispondenza, anche a quelle eliminate. L'esplicito -print si applica solo alle condizioni specificate, che sono -name 'foo*' solo nel ramo else di -name 'foo-exclude-me' .

In generale, usa un esplicito -print ogni volta che stai facendo qualcosa di più complesso di una congiunzione di predicati.

Il tuo secondo tentativo con ! -path './foo-exclude-me/*' non ha funzionato perché ./foo-exclude-me non corrisponde a ./foo-exclude-me/* (nessun / finale ). Aggiunta di ! -path ./foo-exclude-me funzionerebbe.


Linux
  1. Elimina file e directory in base ai loro nomi. Nessun file o directory con questo nome?

  2. File di gatto con directory?

  3. Copiare i primi N file in una directory diversa?

  4. Trova il file quindi cd in quella directory in Linux

  5. Escludi elenco di file da find

Come contare i file nella directory in Linux

Come escludere una directory durante la ricerca di file in Linux

Il comando Trova Directory di Linux:spiegato

Come escludere una directory in find . comando

Trova e rinomina una directory

Escludere i file nascosti durante la ricerca con Unix/Linux find?