GNU/Linux >> Linux Esercitazione >  >> Linux

Come escludere una directory durante la ricerca di file in Linux

In Linux, il comando trova viene utilizzato per cercare file o cartelle dalla riga di comando. È un comando complesso e ha un gran numero di opzioni, argomenti e modalità.

L'uso più comune del comando trova consiste nel cercare i file utilizzando un'espressione regolare o il nome completo dei file da cercare.

[ Potrebbe piacerti anche:Come trovare file contenenti una stringa di testo specifica in Linux ]

Ad esempio, per cercare file con nomi che iniziano con 'file_' , possiamo eseguire:

$ find . -name 'file_*'

Come puoi vedere sopra, restituisce i percorsi completi dei file che vengono restituiti dalla ricerca. Qui, il '.' implica la directory corrente . Trova cercherà il modello del nome del file nella directory corrente, in tutte le sottodirectory e così via fino al livello più profondo della struttura del file. Allo stesso modo, puoi avere qualsiasi altra directory al posto di '.' .

Escludi una directory durante la ricerca di file

Ora, possono verificarsi scenari in cui un utente è sicuro che una o più cartelle specifiche non contengano il file da cercare. Pertanto, è una buona idea escludere tali cartelle dalla ricerca, in modo che il comando restituisca i risultati più velocemente.

Per escludere una directory dalla ricerca, usa il '-prune' argomento:

$ find . -name './test' -prune -o -name 'file_*'

Analizziamo prima cosa sta succedendo qui.

La parte "-name './test' -prune" implica:escludere la cartella 'test' dalla ricerca. Successivamente, '-o' dice al comando:cos'altro dovrebbe essere fatto una volta che il comando esclude 'test' . Passiamo semplicemente il modello descritto nell'esempio precedente qui.

Questo modello verrà ora eseguito su tutte le cartelle, eccetto 'test' .

Ora puoi vedere che la ricerca esclude effettivamente la cartella 'test' . Tuttavia, il nome della cartella stessa viene stampato.

Escludi un nome di directory dall'output di ricerca

Per evitare ciò, aggiungi semplicemente '-print' alla fine. Questa opzione escluderà il nome della directory dall'output.

$ find . -name './test' -prune -o -name 'file_*' -print

Il modello ora ha cercato i file nella directory corrente ed ha escluso il 'test' directory.

Conclusione

In questo articolo, abbiamo visto come escludere una directory durante la ricerca di file utilizzando il comando trova. Nota che gli esempi forniti in questo articolo stanno cercando file in base ai nomi di file ('-name') . Ci sono molti altri modi per cercare i file anche all'interno del comando trova. Assicurati di fare riferimento alla pagina man del comando trova per esplorarli in profondità.

Grazie per la lettura e sentiti libero di lasciare commenti o domande nei commenti qui sotto.


Linux
  1. Trovare file nella riga di comando (come fare per)

  2. Come trovare il numero di file in una directory e sottodirectory

  3. Come rinominare i file in Linux

  4. Come trovare un file in Linux in tutte le directory in modo ricorsivo

  5. Come escludere file di determinate dimensioni dalla copia in Linux

Come contare i file nella directory in Linux

Come trovare file con il comando fd in Linux

Come elencare i file in modo ricorsivo in Linux

Come contare i file nella directory su Linux

Come contare il numero di file in una directory in Linux

Come trovare le cartelle in Linux