Categorie
Articoli

Come usare il comando ‘find’

Questa esercitazione vi illustrerà i diversi modi per trovare una directory in Linux. Come forse già sapete, in Linux tutto è un file, comprese le directory. Una delle operazioni più comuni che un utente Linux compie alla riga di comando è la ricerca di un file o di una directory. Esistono diversi mezzi e utilità per la ricerca di file sulla riga di comando, come find, locate e which. Tuttavia, l’ultima utility (which) viene utilizzata solo per localizzare un comando.

Per lo scopo di questa esercitazione, ci concentreremo principalmente sull’utilità find, che cerca i file in un filesystem Linux attivo ed è più efficiente e affidabile rispetto a locate.

Lo svantaggio di locate è che legge uno o più database creati da updatedb, non cerca in un filesystem attivo. Inoltre, non offre la stessa flessibilità per quanto riguarda il punto di partenza della ricerca.

Di seguito è riportata la sintassi per l’esecuzione del comando locate:

  • # locate [option] [search-pattern]

Per dimostrare lo svantaggio di locate, supponiamo di cercare una directory denominata pkg nella directory di lavoro corrente.

Nota: nel comando qui sotto, l’opzione –basename o -b indica a locate di corrispondere solo al nome di base del file (directory) (che è esattamente pkg) ma non al percorso (/path/to/pkg). Se \ è un carattere di globbing, disabilita la sostituzione implicita di pkg con *pkg*.

  • $ locate –basename ‘\pkg’

Come si può vedere dall’output del comando qui sopra, locate cercherà a partire dalla directory principale (/), per questo motivo le altre directory con lo stesso nome vengono confrontate.

Pertanto, per risolvere questo problema, si può utilizzare find seguendo la sintassi semplificata riportata di seguito:

  • $ trova le opzioni del punto di partenza [espressione]

Vediamo alcuni esempi.

Per cercare la stessa directory (pkg) di cui sopra, all’interno della directory di lavoro corrente, eseguite il seguente comando, dove il flag -name legge l’espressione che in questo caso è il nome di base della directory.

  • $ trova . -nome “pkg”

Se si riscontrano errori di “Permesso negato”, usare sudo comando in questo modo:

  • $ sudo find . -nome “pkg”

È possibile impedire a find di cercare altri tipi di file, eccetto le directory, utilizzando il flag -type per specificare il tipo di file (nel comando sottostante d significa directory) come segue:

  • $ sudo find . -tipo d -nome “pkg”

Inoltre, se si desidera elencare la directory in un formato lungo, utilizzare l’opzione -ls:

  • $ sudo find . -tipo d -nome “pkg” -ls

Successivamente, l’opzione -iname abilita la ricerca senza distinzione tra maiuscole e minuscole:

  • $ sudo find . -tipo d -nome “pkg”
  • $ sudo find . -tipo d -nome “PKG”

Per trovare informazioni d’uso più interessanti e avanzate, leggete le pagine man di find e locate.

  • $ uomo trova
  • $ man locate

Come ultima osservazione, il comando find è più affidabile ed efficiente per la ricerca di file (o directory) in un sistema Linux, se confrontato con il comando locate.