Il comando find: un potente strumento di ricerca in Linux
Il comando find è uno degli strumenti più potenti e versatili per la ricerca di file e directory nel sistema Linux. Ti spiegherò come funziona, quando usarlo e come sfruttarne appieno le potenzialità.
Cos’è e perché è utile
find permette di cercare file e directory in base a diversi criteri come nome, dimensione, data di modifica, permessi e molto altro. A differenza di comandi più semplici, find esegue ricerche ricorsive (cioè esplora anche sottodirectory) e offre numerose opzioni di filtraggio e azioni.
È particolarmente utile quando:
– Non ricordi dove hai salvato un file
– Hai bisogno di trovare file di un certo tipo in tutto il sistema
– Vuoi eseguire operazioni su file che soddisfano criteri specifici
Sintassi di base
La struttura fondamentale del comando è:
find [directory-di-partenza] [opzioni] [espressione]
Dove:
– [directory-di-partenza] è il punto da cui iniziare la ricerca
– [opzioni] modificano il comportamento della ricerca
– [espressione] specifica cosa cercare e cosa fare con i risultati
Esempi pratici con spiegazioni
1. Ricerca per nome di file
find /home/utente -name "documento.txt"
Questo comando cerca il file “documento.txt” all’interno della directory /home/utente e di tutte le sue sottodirectory. La ricerca è case-sensitive (distingue tra maiuscole e minuscole).
Se invece volessi una ricerca case-insensitive (che non distingue tra maiuscole e minuscole):
find /home/utente -iname "documento.txt"
2. Ricerca con wildcard (caratteri jolly)
find /home/utente -name "*.pdf"
Questo comando trova tutti i file con estensione .pdf nella directory specificata. L’asterisco (*) è un carattere jolly che rappresenta qualsiasi sequenza di caratteri.
3. Ricerca per tipo di file
find /home/utente -type f
Questo comando trova tutti i file normali (non directory, link simbolici, ecc.) nella directory /home/utente.
I tipi principali sono:
– f = file normali
– d = directory
– l = link simbolici
4. Ricerca per tempo di modifica
find /home/utente -mtime -7
Questo comando trova i file modificati negli ultimi 7 giorni. Il numero dopo -mtime indica:
– Con - davanti: meno di n giorni fa
– Con + davanti: più di n giorni fa
– Senza segno: esattamente n giorni fa
5. Ricerca per dimensione
find /home/utente -size +10M
Questo comando trova file più grandi di 10 megabyte. Le unità disponibili sono:
– c = byte
– k = kilobyte
– M = megabyte
– G = gigabyte
6. Combinare criteri con operatori logici
find /home/utente -name "*.jpg" -a -size +1M
Questo comando trova file con estensione .jpg che sono più grandi di 1 megabyte. L’operatore -a significa AND (entrambe le condizioni devono essere vere).
Altri operatori logici:
– -o (OR): almeno una condizione deve essere vera
– ! (NOT): nega la condizione
7. Eseguire comandi sui file trovati
find /home/utente -name "*.txt" -exec echo "Trovato: {}" \;
Questo comando trova tutti i file .txt e per ciascuno esegue l’echo mostrato. Il {} viene sostituito con il nome del file trovato e \; indica la fine del comando da eseguire.
Un uso comune con EndeavourOS potrebbe essere trovare e cancellare file temporanei:
find ~/.cache -type f -mtime +30 -exec rm {} \;
Questo trova file nella cache più vecchi di 30 giorni e li rimuove.
Opzioni potenti ma meno conosciute
Escludere directory dalla ricerca
find /home/utente -path "*/node_modules" -prune -o -name "*.js" -print
Questo cerca file .js ma esclude le directory node_modules, molto utile per sviluppatori.
Limitare la profondità di ricerca
find /home/utente -maxdepth 2 -name "config.yaml"
Questo limita la ricerca a massimo 2 livelli di profondità dalla directory di partenza.
Come leggere l’output di find
L’output di find è solitamente una lista di percorsi, uno per riga. Per file nascosti (quelli che iniziano con .), assicurati di controllare attentamente l’output.
Buone pratiche con find
- Testa prima con output limitato: Prima di eseguire comandi potenzialmente distruttivi con
-exec, prova la ricerca senza l’azione per verificare quali file verranno interessati. - Usa quote per i pattern: Metti sempre tra virgolette i pattern di ricerca per evitare che la shell interpreti caratteri speciali.
- Attenzione ai permessi:
findpuò dare errori “Permission denied” per directory a cui non hai accesso. Puoi reindirizzare gli errori a/dev/nullcon2>/dev/nullse vuoi un output più pulito.
Approfondimento: find vs locate
Mentre find cerca fisicamente nel filesystem in tempo reale, il comando locate cerca in un database precostruito ed è molto più veloce, ma meno flessibile e potrebbe non mostrare file creati di recente:
locate documento.txt
Su EndeavourOS, puoi aggiornare il database di locate con:
sudo updatedb
Per saperne di più
Come sempre in Linux, la documentazione integrata è eccellente:
man find
find --help
Questi comandi ti mostrano tutte le opzioni disponibili con spiegazioni dettagliate.
Con la pratica e sperimentazione, find diventerà uno dei tuoi strumenti preferiti per navigare ed esplorare il tuo sistema.

