Ultimamente sto utilizzando il tempo che dedico allo studio di linux all'approfondimento delle potenzialità del terminale (ciò che mi affascina di più di questo SO). Oggi voglio parlarvi della ricerca dei files tramite terminale, utilizzando il comando locate :)
Utilizzo base.
Supponiamo di cercare i nostri vecchi appunti di chimica, ma non sappiamo dove si trovano. sfruttando il comandolocate
ci basterà scrivere$ locate chimica
/home/antonio/Documenti/chimica
/home/antonio/Documenti/links_chimica.txt
/home/antonio/Documenti/chimica/appunti.txt
/home/antonio/Documenti/chimica/test_esame.txt
Ed automaticamente salteranno fuori in terminale tutti i files e le cartelle aventi la parola chimica nel nome! Comodo no? Naturalmente anche questo comando ha le sue opzioni, alcune delle quali mi accingo ad analizzare.
Ricerche senza il Case Sensitive.
Linux, come saprete, è Case Sensitive, ovvero fa differenza tra maiuscole e minuscole; ecco perchè il comando locate chimica troverà tutti i files e le cartelle contenenti la parola chimica, ma non contenenti (ad esempio) Chimica o ChimicA. Per ovviare a questo problema, basta sfruttare l'opzione-i
(--ignore-case
), che aggira la "case-sensitività" e ci mostra i risultati della parola scritta senza preoccuparsi delle lettere maiuscole o minuscole.Riprovando infatti il comando con questa opzione notiamo l'inclusione di altri risultati precedentemente omessi
$ locate -i chimica
/home/antonio/Documenti/Lezioni_Chimica
/home/antonio/Documenti/chimica
/home/antonio/Documenti/links_chimica.txt
/home/antonio/Documenti/Lezioni_Chimica/lezione1.txt
/home/antonio/Documenti/Lezioni_Chimica/lezione2.txt
/home/antonio/Documenti/chimica/appunti.txt
/home/antonio/Documenti/chimica/test_esame.txt
Un altra opzione è
-c
(--count
) la quale, invece di restituirci i risultati, ci dice solamente quante voci sono state trovate. Così se vogliamo sapere quanti files hanno la parola Antonio e quanti stanno in una directory con il nome Antonio ci basta scrivere$ locate -c Antonio
5943
Per le altre opzioni vi basta consultare l'help del programma, visualizzabile con il comandolocate --help
Indicizzazione.
Lo strumento locate non fa una ricerca all'interno del disco rigido, ma si basa su un database che è/var/lib/mlocate/mlocate.db
. Giustamente, se creiamo un file adesso il database non si aggiornerà automaticamente; possiamo verificare la cosa in questo modo$ touch fileappenacreato.txt
$ locate -c fileappenacreato
0
Come potete vedere il comando non ha prodotto alcun risultato, poichè il file fileappenacreato.txt non è stato ancora indicizzato. Per aggiornare il database dei files presenti nel computer basta dare il comando updatedb
(va dato con i permessi di root).Vediamo il suo utilizzo in un esempio
$ touch ancoraunfile.txt
$ locate ancoraunfile
$
$ sudo updatedb
$ locate ancoraunfile
/home/antonio/ancoraunfile.txt
Come potete vedere, dopo aver lanciato updatedb
il sistema ha indicizzato il nuovo file appena creato e il comando locate ha potuto rintracciarlo.Il comando locate è davvero un ottimo strumento di ricerca, con cui vi consiglio di familiarizzare e studiare tramite il suo --help.
Buone ricerche a tutti!