Come cercare un file in linux. Due comandi : find e locate

Come ti trovo!

Cercare un file in linux con find

Una delle prime domande che pone un nuovo utilizzatore del pinguino è quella della di come si cerca un file in linux.

Uno dei modi per cercare e un file in linux da shell è quello di utilizzare il comando find . Con find si cercano anche le directory.

Iniziamo:

find -name “file_Da_cercare”

Con questa struttura noi ricercheremo nella directory corrente un file che si chiama esattamente file_Da_cercare con il controllo maiuscole/minuscole. Quindi se dovesse esistere nella directory un file file_da_cercare , non verrebbe proposto come trovato.

Volendo fare una ricerca non case-sensitive dobbiamo utilizzare il paramentro -iname

find -iname “file_da_cercare”

cercare un file in linux
Comando find per cercare un file in linux



Io di solito lancio il comando con sudo ….

Nell’immagine abbiamo visto una ricerca effettuata su Ubuntu nella directory Scrivania con l’utilizzo dei parametri -iname  o -name 

Adesso creiamo sulla Scrivania i file  pippo ,Pippo , Pluto , plUto e Paperino e vediamo come ricercare un file imponendo come come parametri di ricerca parte del nome file e che la ricerca deve essere svolta nella directory corrente.

Cerchiamo tutti i file che contengono nel nome la sequenza esatta  “lU” e poi la stessa sequenza senza controllo case-sensitive

sudo find -name “*lU*”

sudo find -iname “*lU*”

ricerca file con ubuntu
comando find utilizzato su Ubuntu per cercare un file con utilizzo del carattere speciale *

Per fare questa ricerca è stato utilizzato il carattere speciale * .

Tale carattere può essere utilizzato in questo modo :  “*ippo” “*pip*” “pi*”

“*ippo” = Trova i file che loro  nomi finiscono per ippo

“*pip*” = Trova i file che hanno i nomi che contengono la stringa pip

“pi*”  = restituisce lista dei file che hanno il nome che inizia con pi

Per poter ricercare file nell’intera unità corrente utilizzeremo il parametro ” / ” che impone al comando la ricerca dalla radice.

find  / -name “file_Da_cercare”



Altri parametri

-size 

Ora che conosciamo la logica con cui lavora find passiamo ad altri suoi parametri utilizzabili.

find / -size +10M -iname “file_Da_cercare”

Con questo comando andremo a ricercare file che abbiano una grandezza >= a 10MB (maggiore o uguale)

find / -size -10M -iname “file_Da_cercare”

Con questo comando andremo a ricercare file che abbiano una grandezza <= a 10MB (minore o uguale)

Possiamo utilizzare come unità di misura anche :

c = byte

k= kilobyte

M= megabyte

G = gigabyte

-perm

find / -perm 777 -name “*stringa*”
con -perm ricercheremo tutti i file o cartelle che hanno l’attributo 777

Directory o file ?

A proposito, stavo dimenticando la differenza fra file e directory o cartelle. In ambiente Microsoft in una cartella possono coesistere una cartella di nome pippo e un file di nome pippo . In ambiente linux No.

cercare un file in linux

 il parametro da utilizzare se vogliamo distinguere  una ricerca su file o directory è -type

quindi

-type d = ricerca solo le directory

-type f = ricerca solo i file

pertanto  , non utilizzando il parametro -type verrà effettuata la ricerca in maniera non condizionata.

Cercare un file in linux con locate.

Il comando di localizzazione viene utilizzato per trovare i file in base al loro nome di file. Il comando di localizzazione è velocissimo perché c’è un processo in background che gira sul sistema che trova continuamente nuovi file e li memorizza in un database. Quando si usa il comando locate, cerca il nome del file in quel database invece di cercare il proprio filesystem mentre si aspetta (che è quello che fa il comando find).

Usare il comando è facile; basta digitare “locate” seguito dal nome del file che si sta cercando, in questo modo:

locate fatttuta.txt

Qualora il db non fosse aggiornato, si può spingere ad aggiornarsi con questo semplice comando

sudo updatedb

Se un file viene rimosso dal sistema, fino a quando non si aggiorna di nuovo il database di localizzazione, il comando continuerà a mostrare quel nome del file in uscita. In questo caso si può saltare l’aggiornamento del database, e avere comunque risultati corretti in output usando l’opzione -e della riga di comando.

locate -e fattura.txt



Case sensitive

Per impostazione predefinita, l’operazione di ricerca che il comando di localizzazione esegue è sensibile alle maiuscole e minuscole. Ma è possibile forzare lo strumento ad ignorare le distinzioni di caso utilizzando l’opzione della riga di comando -i.

Per esempio, ho due file sul mio sistema, chiamati ‘elencofatture.txt’ e ‘ElencoFatture.txt’. Quindi, come potete vedere, i nomi dei file sono gli stessi, solo che i loro casi sono diversi.

Se chiedete di localizzare con locate  “*fatture*”, allora mostrerà solo il nome minuscolo nel suo output:

elencofatture.txt

mentre se utilizziamo locate -i *fatture*

darà come risultato

sia elencofatture.txt  che ElencoFatture.txt