Come trovare file e directory su Linux
Per cercare un file o una directory sul sistema operativo Linux si possono utilizzare due comandi: find e locate.
Il comando find
Il comando find cerca i files che corrispondono a un'espressione di ricerca.
find [percorso] [espressione]
Il percorso limita la ricerca all'interno di una cartella.
Nota. Se non è specificato, la ricerca viene effettuata sulla directory corrente dove viene eseguito il comando find.
L'espressione definisce la ricerca nel file system. E' composta da operatori, opzioni, pattern.
Com'è composta un'espressione di ricerca?
Le opzioni più usate sono:
- -name. Cerca un pattern nel percorso.
- -iname. Cerca un pattern nel percorso senza distinguere tra maiuscole e minuscole (case insensitive)
- -ls. Visualizza i risultati in formato ls.
- -mtime. Seleziona i risultati in base al tempo. Ad esempio, quelli modificati da almeno 10 giorni ( -mtime +10 ) e non oltre 15 giorni ( -mtime -15 ).
- -size. Seleziona i risultati in base alla dimensione dei files. Ad esempio per cercare i file con dimensione compresa tra un byte ( -size +1c ) e inferiori a 10 byte ( -size -10c ). Le unità di misura utilizzabili nell'opzione sono il byte o carattere (c), il kilobyte (k), il megabyte (M) e il gigabyte (G).
- -type. Seleziona i risultati in base alla tipologia. Ad esempio, le directory (d), i files (f).
- -newer. Seleziona i files più recenti rispetto a una risorsa presa come riferimento.
- -user. Seleziona i file di un utente specifico.
- -group. Seleziona i file di un gruppo specifico.
- -perm. Seleziona i file in base ai permessi.
- -exec. Esegue un'operazione sui risultati.
Le opzioni sono combinabili?
Le opzioni si possono anche combinare con altre opzioni.
In questo modo è possibile definire espressioni di ricerca più precise.
Un esempio pratico
In questa espressione cerco i file con il nome che comincia con prova* creati da almeno 10 giorni.
Un esempio pratico di utilizzo del comando find
Voglio cercare i file prova* soltanto nella directory Documenti
Apro il terminale e scrivo il seguente comando:
Il comando locate
Il comando locate mi permette di cercare un file o una directory nel file system tramite la linea comandi.
La sintassi del comando è la seguente:
locate [espressione]
Svolge la stessa funzione del comando find.
Qual è la differenza tra locate e find?
Locate è molto più veloce rispetto a find ma compie la ricerca in un indice non aggiornato del file system.
Perché? Ogni giorno il sistema operativo indicizza le risorse in un database tramite il processo updatedb. Il comando locate effettua la ricerca in questo database anziché nel file system. Quindi, la ricerca non è in tempo reale.
Un esempio pratico
Per cercare tutti i file prova* scrivo il comando locate prova*.