Corsi per Webmaster e Web Designer
Corsi on-line

Cercare un file: locate, find e grep

  • Scrivi un commento
  • Discuti sul forum
  • Interagire col file system: pwd, ls e cd
  • Creare e/o cancellare file e directory: touch, rm, mkdir e rmdir

In questa lezione vedremo come effettuare delle ricerche per individuare determinati file o directory all'interno del nostro file system.
Per fare ciò Linux dispone di diversi comandi, in questa guida vedremo come funzionano e a cosa servono i tre principali.

Il modo più semplice e veloce per cercare file o directory ci è offerto dal comando locate che effettua ricerche sulla base del nome dei file. Il suo funzionamento è semplicissimo: è sufficiente accompagnare locate al termine che si vuole cercare. Il risultato sarà un elenco di file e directory che contengono nel loro nome e percorso la parola che si è cercato.

L'articolo continua dopo la pubblicità

locate termine_da_cercare
Se, ad es., volessimo cercare nel nostro server tutti i file che hanno nel nome il termine "pippo", useremo:

locate pippo
Locate è davvero velocissimo! Il perchè di questa velocità sta nel fatto che in realta il comando in questione non effettua una ricerca real-time tra i file della macchina, ma si limita a spulciare un apposito database contenente informazioni sui files presenti nella macchina in un dato momento. E' pertanto importante tenere aggiornato questo database usando, di volta in vola, l'apposito comando, ovvero updatedb.

Altro comando utile è find che ci consente di ricercare file e directory in base al nome, alla data di creazione o alla sua dimensione.
Il comando find è molto potente... ma attenzione, talvolta è anche piuttosto lento!!!

Vediamo ora come usare find:

Se volessimo cercare in base al nome del file useremo l'opzione -name, in questo modo:

find /directory/dove/cercare/ -name termine_da_cercare
Se ad es. volessimo cercare in tutta la macchina tutti i file che hanno nel nome il termine "pippo" (come abbiamo fatto con locate), useremo:
find / -name pippo
Se volessimo cercare in base alla data di creazione del file useremo l'opzione -ctime seguita dall'età (espressa in giorni) del file da cercare.

find /directory/dove/cercare/ -ctime età_in_giorni
Se ad es. volessimo cercare nella directory /home/web/miosito/ un file creato 7 giorni fa useremo:
find /home/web/miosito/ -ctime 7
Se, per finire, volessimo cercare in base alla dimensione useremo l'opzione -size seguita dalla dimensione in K. Find restituirà tutti i file di dimensione uguale o superiore.

find /directory/dove/cercare/ -size dimensione_in_K
Se ad es. volessimo cercare nella directory /home/web/miosito/fotografie/ tutti i file con dimensione uguale o maggiore di 100 K scriveremo:
find /home/web/miosito/fotografie/ -size 100
Per finire questa nostra lezione vediamo un ultimo, utilissimo comando: grep.
Con grep possiamo cercare i file che conengono una determinata parola o una determinata stringa di testo. La sintassi è la seguente:
grep pattern file
Poniamo, per fare un esempio, di voler cercare tutti i file .html che contengono la parola "casa":
grep casa *.html
Grazie alla sintassi qui sopra verrà cercata la stringa "casa" tra tutti i file .html (l'asterisco, infatti, sta ad indicare "qualsiasi cosa" - c.d. wildcards - ed è utilizzato, nel nostro esempio, per cercare ogni files con estensione .html).

Da notare che nel nostro esempio abbiamo cercato non la parola "casa", ma la stringa! Ne consegue che nei risultati potremo trovare anche files che contengono, ad esempio, la parola "casale" o "casata".

Se avessimo voluto cercare solo a parola "casa" avremmo dovuto usare l'opzione -w in questo modo:

grep -w "casa" *.html
Le potenzialità di grep sono tantissime, tuttavia rimando ad altra sede la trattazione completa di questo comando il quale può essere compreso a pieno solo dopo aver introdotto le espressioni regolari (argomento che tratteremo in futuri tutorial).

Corsi
  • Corso Linux
    Corso Linux
    Guida completa al sistema open-source. A partire da 39 €
  • Corso Ubuntu
    Corso Ubuntu
    Impariamo ad utilizzare il sistema operativo open-source Ubuntu Linux. A partire da 39 €