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 comando locate 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 comando
locate --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!

| edit post

0 Reply to "Where is that file? LOCATE it!"

  • Posta un commento

    Se ti è piaciuto l'articolo, o hai domande, lascia qui un commento! Se invece vuoi essere sempre aggiornato sulle novità del blog collegati ai Feed RSS.