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.

    esempio find -name

  • -iname. Cerca un pattern nel percorso senza distinguere tra maiuscole e minuscole (case insensitive)

    find -iname

  • -ls. Visualizza i risultati in formato ls.

    la visualizzazione dei risultati con il parametro -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 ).

    esempio di find con -mtime

  • -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 ).

    esempio di find -size

    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).

    un esempio di find -type

  • -newer. Seleziona i files più recenti rispetto a una risorsa presa come riferimento.

    un esempio di find -newer

  • -user. Seleziona i file di un utente specifico.

    un esempio di find -user

  • -group. Seleziona i file di un gruppo specifico.

    un esempio di find -group

  • -perm. Seleziona i file in base ai permessi.

    un esempio di find -perm

  • -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:

un esempio pratico di find

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*.

un esempio di utilizzo del comando locate su Linux

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Libri di approfondimento

Linux

FAQ