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.