Articolo originale: How to Search for Files from the Linux Command Line
Cercare dei file è relativamente facile quando stai usando una Interfaccia Grafica Utente (GUI). Ma in alcuni ambienti, come i server che non sono dotati di GUI, devi cercare i file usando la riga di comando.
C'è un comando potente in Linux che ti aiuta nella ricerca di file e cartelle chiamato find
. In questo articolo, esamineremo il comando find
con alcuni esempi.
Cos'è il comando find in Linux?
Il comando find
ti consente di cercare con efficienza file, cartelle, dispositivi a caratteri e dispositivi a blocchi.
Qui sotto la sintassi base per il comando find
:
find /percorso/ -type f -name file-da-cercare
Dove:
/percorso
è il percorso dove ci si aspetta di trovare il file. Questo è il punto di partenza per la ricerca dei file. Il percorso può anche essere/
o.
che rappresenta rispettivamente la radice e la directory corrente.-type
rappresenta il descrittore del file. Può essere uno dei seguenti:f
- File normali come i file di testo, le immagini, i file nascosti.d
- Directory: vengono prese in considerazione solo le directory.l
- Link simbolici: i link simbolici puntano a dei file e sono simili a scorciatoie.c
- Dispositivi a carattere: sono file usati per accedere a dispositivi a carattere. I driver comunicano con i dispositivi a carattere inviando e ricevendo singoli caratteri (byte, ottetti). Esempi sono le tastiere, le schede audio e il mouse.b
– Dispositivi a blocco: sono file usati per accedere a dispositivi a blocco. I driver comunicano con i dispositivi a blocco inviando e ricevendo interi blocchi di dati. Esempi sono i dispositivi USB e i CD ROM
-name
è il nome del file che vuoi cercare
Esempi del comando find
Ora che conosciamo la sintassi del comando find
vediamo alcuni esempi.
Come cercare file per nome o per estensione
Supponiamo di dover cercare file che contengono la stringa "style". Useremo questo comando:
find . -type f -name "*style*"
Risultato

Ora supponiamo di dover cercare file con una particolare estensione, come .html
. Modificheremo il comando in questo modo:
find . -type f -name "*.html"
Risultato

Come cercare file nascosti
I file nascosti sono rappresentati da un puntino che precede il nome del file. Normalmente sono nascosti, ma possono essere elencati con il parametro -a
del comando ls
, per esempio per elencare file nascosti nella directory corrente digitare ls -a
.
Per cercare file nascosti modifichiamo come segue il comando find
.
find . -type f -name ".*"
Risultato

Come cercare file di log e di configurazione
I file di log in genere hanno estensione .log
e li possiamo cercare in questo modo:
find . -type f -name "*.log"
Risultato

In modo simile, per cercare file di configurazione (che in genere hanno estensione .conf
) digitiamo:
find . -type f -name "*.conf"
Come cercare file per tipo
Possiamo cercare file di dispositivo a carattere passando c
al parametro -type
:
find / -type c
Analogamente i file di dispositivo a blocco si trovano passando b
:
find / -type b
Come cercare directory
Nell'esempio che segue cerchiamo delle cartelle chiamate lib
. Nota che usiamo -type d
.
find . -type d -name "lib*"
Risultato

💡 Suggerimento: possiamo identificare le directory cercando il flag d
nel risultato del comando ls -l
.

Come cercare per dimensione
Un utilizzo incredibilmente utile del comando find
è quello di elencare i file in base a una particolare dimensione.
find / -size +250MB
Altre unità di dimensione sono:
G
: GigaByte.M
: MegaByte.K
: KiloByteb
: byte.
Sostituisci semplicemente <Tipo Unità> con quella desiderata.
find <directory> -type f -size +N<Tipo Unità>
Come cercare file per data di modifica
find /percorso -name "*.txt" -mtime -10
- -mtime +10: significa che vuoi cercare file modificati almeno 1o giorni fa.
- -mtime -10: significa meno di 10 giorni fa.
- -mtime 10: se ometti + o – vuol dire esattamente 10 giorni fa.
Di seguito il contenuto della mia directory home:

Applichiamo l'esempio di ricerca sopra descritto nella mia directory home (ipotizzando che il comando sia stato eseguito il 17 febbraio)
find . -type f -name ".*" -mtime +10

Esempi pratici di find
negli script bash
Possiamo combinare find
con il comando di eliminazione rm
o spostamento mv
per creare script bash significativi che possono essere automatizzati.
Diciamo che vogliamo creare uno script che sposta i file di log più vecchi di 7 giorni in una cartella di backup e che nella cartella di backup elimina i file di log che sono più vecchi di 30 giorni. Possiamo creare uno script e pianificarne l'esecuzione con cron
. Puoi saperne di più su cron
in questo articolo.
Vediamo lo script:
#!/bin/bash
# Script per spostare i file di log più vecchi di 7
# giorni nel percorso di backup app/backup_logs/ESB0*
# sposta i log ESB01 nella cartella di backup
find /logs/esb01/audit -name "*.tar.gz" -mtime +7 -exec mv {} app/backup_logs/ESB01/ \;
# Elimina i file di log più vecchi di 30 giorni
# dalla cartella di backup
find /app/backup_logs/ESB01 -name "*.tar.gz" -mtime +30 -exec rm {} \;
Nota che usiamo exec
con find
. Praticamente, exec
esegue il comando fornito (mv
e rm
nel nostro caso). {}
è il segnaposto che contiene l'elenco dei file ottenuti dalla ricerca sui quali eseguire il comando. Infine passiamo il separatore ;
. Visto che non vogliamo che la shell interpreti il punto e virgola lo facciamo precedere dalla sequenza di escape \
.
Questo script che condivido è molto utile per archiviare ed eliminare i log.
Riepilogo
In questo articolo, abbiamo esaminato in dettaglio il comando find
e imparato come cercare i file per nome, tipo, dimensione e data di modifica.
Mi auguro che tu abbia trovato utile questo tutorial.
Dimmi cosa ne pensi su Twitter!
Puoi leggere i miei altri post qui.
Risorse: Immagine del banner da Office illustrations by Storyset e Canva.