Ti sei mai ritrovato a cercare freneticamente un file importante, solo per rendersi conto che hai perso molte ore cercando in ogni directory ma il file non si trova da nessuna parte? Bene, questo è un problema comune che deve affrontare la maggior parte degli utenti Linux, in particolare i nuovi utenti con un numero enorme di file e directory disorganizzati. In questo articolo, spieghiamo come cercare file e directory in diversi modi utilizzando il comando find in Linux.
Qual è il comando find in Linux
Il comando find è uno degli strumenti più importanti che aiutano gli utenti Linux a cercare i propri file e cartelle con una varietà di opzioni. Puoi persino eseguire i comandi della shell sugli elementi di ricerca restituiti (ne parleremo più avanti!). La sintassi per cercare file e directory utilizzando il comando find è:
find <options> <location> <expression>
Ecco come spiegheremo la sintassi di cui sopra:
<options>
sono le varie opzioni utilizzate per affinare la ricerca<location>
specifica la posizione in memoria in cui cercare il comando find<expression>
specifica l’elemento di ricerca da cercare
Alcune delle opzioni comuni da abbinare al comando find sono:
Opzioni | Descrizione |
---|---|
-name |
Questa opzione viene utilizzata per specificare il nome del file o della cartella. |
-type |
Questo specifica il tipo di elementi da cercare. |
-exec |
Il flag exec viene utilizzato per eseguire i comandi della shell sull’output. |
-size |
Questo flag filtra gli elementi in base alla dimensione dell’occupazione di memoria. |
-perm |
Questo flag filtra i file e le directory in base alle relative autorizzazioni. |
-user |
Questo flag viene utilizzato per cercare file e directory di proprietà di un utente specifico. |
Modi migliori per utilizzare il comando find in Linux
Il modo più comune per cercare file e directory con il comando find in Linux è con il rispettivo nome. Se non si conosce il nome esatto del file, il comando find essendo molto versatile può essere utilizzato per cercare file anche con la parte di un nome.
1. Trova file specifici con nome corrispondente
Per cercare file e directory con il comando find, utilizzare il flag -iname. Il vantaggio della ricerca con questo flag è che cercherà il nome specificato ignorando maiuscole e minuscole del nome del file. La sintassi per utilizzare il comando find con il flag -iname è:
find <location> -iname <search_name>
Ad esempio, se vuoi cercare il file “test.txt” nella directory corrente, usa questo comando:
find . -iname "test.txt"
Qui, il ‘.’ rappresenta la directory corrente in termini di modalità di indirizzamento relativa per la posizione del file. È anche possibile utilizzare la modalità di indirizzamento assoluto per la posizione del file, se si trova difficile comprendere la modalità relativa.

Il flag “-iname” ignorerà il caso dei nomi dei file. Per cercare nomi di file che corrispondano esattamente al nome del file, è sufficiente sostituire il flag -iname con il flag -name:
find <location> -name <name_to_search>
2. Trova i file per modello di nome in Linux
A volte è necessario lavorare con un file importante ma non si riesce a ricordare il nome completo del file. Anche in questa situazione, il comando find può essere il tuo salvatore. Usa semplicemente i caratteri jolly per abbinare il modello per il tuo nome file. I caratteri jolly cercheranno quindi di abbinare il modello dato con tutti i nomi disponibili. Supponiamo che tu debba cercare un file “test-101.py” nella directory corrente, puoi usare il seguente comando:
Questo elencherà i diversi file che iniziano con il nome ‘test’ nei loro nomi di file come mostrato di seguito:
find . -type f -iname "test*"
Qui viene aggiunto il tipo f per specificare il tipo di elemento di ricerca come file. Inoltre, assicurati di utilizzare l’espressione jolly tra virgolette doppie per evitare errori.

3. Trova file o directory con nomi corrispondenti
Generalmente, il comando find cerca tutti i file e le directory corrispondenti al nome. Per cercare solo i file, utilizzare l’opzione “-type f” con la sintassi di base:
find <location> -type f -name <name_to_search>
Ad esempio, il seguente comando mostrerà tutti i file con il nome “test”:
find . -type f -iname "test*"

Per cercare solo directory utilizzare il flag “-type d” come:
find <location> -type d -iname <name_to_search>
Ad esempio, il seguente comando mostrerà tutte le directory con il nome “test”:
find . -type d -iname "test*"

4. Trova file con estensione specifica
Con la micidiale combinazione di caratteri jolly e il comando find, puoi persino cercare i file in base alle loro estensioni. Ad esempio, se devi cercare un file di configurazione nella directory corrente, ma non conosci il nome esatto, puoi utilizzare il comando:
find . -iname "*.conf"

5. Trova file e directory in base alle dimensioni
Se combinato con descrittori di dimensione appropriati, puoi utilizzare il comando find con il flag -size per trovare file e directory in Linux in base alla loro dimensione occupata nella memoria. Inoltre, è possibile aggiungere vari descrittori di dimensione per specificare il limite di dimensione del file da cercare.
La sintassi di base per trovare i file in Linux in base alla dimensione è:
find <location> -type <search_item_type> -size <symbol><file_size><size_descriptor>
La sintassi di cui sopra è la stessa delle precedenti, ad eccezione del “-size <symbol><file_size><size_descriptor>
” parte. Ecco una spiegazione per questa parte:
- Per la parte
puoi specificare ‘+’ o ‘-‘ o anche lasciarlo vuoto. Qui, ‘+’ significa cercare file/directory che superano la dimensione data, e ‘-‘ specifica di trovare file/directory al di sotto della dimensione data. Se viene lasciato vuoto, il comando find cercherà i file che corrispondono esattamente alla dimensione. specifica la dimensione del file/directory. <size_descriptor>
si riferisce all’intervallo di dimensioni del file che si desidera cercare.
Vari tipi di descrittori di dimensioni che puoi utilizzare sono:
Descrittore di dimensioni | Descrizione |
---|---|
c |
Specifica il comando find per cercare la dimensione in byte |
k |
Specifica il comando find per cercare la dimensione in kilobyte |
M |
Specifica il comando find per cercare la dimensione in megabyte |
G |
Specifica il comando find per cercare la dimensione in gigabyte |
La sintassi di cui sopra può sembrare molto complicata per alcuni utenti, ma alcuni esempi la renderanno più facile da capire.
- Se è necessario visualizzare directory pari a 4 kB nella directory Documenti, utilizzare questo comando:
find ~/Documents -type d -size 4k

- Oppure, se hai poco spazio e devi visualizzare file che superano i 100 MB nella directory Documenti, usa questo comando:
find ~/Documents -type f -size +100M

- Se devi visualizzare file di dimensioni inferiori a 10 MB nella directory Documenti, utilizza questo comando:
find ~/Documents -type f -size -10M

- Se hai bisogno di visualizzare file vuoti nella directory Documenti, usa questo comando:
find ~/Documents -type f -size 0

6. Trova file e directory corrispondenti a un’autorizzazione specifica
Le autorizzazioni in Linux sono della massima importanza in Linux per proteggere sia i file che le directory dall’accesso involontario. Per saperne di più, consulta la nostra guida completa sui permessi di Linux.
Per trovare file e directory in base al set di autorizzazioni, utilizzare questa sintassi:
find <location> -type <search_item_type> -perm <permission_set>
Nella sintassi di cui sopra, è possibile utilizzare la modalità assoluta di indirizzamento o la modalità relativa per <permission_set>
.
Supponiamo che tu debba trovare file con permesso di sola lettura per root, usa questo comando:
find ~/Documents/test/ -type f -perm 400

Oppure, se desideri trovare file con autorizzazioni di lettura e scrittura per tutti gli utenti, utilizza questo comando:
find ~/Documents/test/ -type f -perm a=r+w

7. Trova file e directory di proprietà di un utente
Come abbiamo spiegato in precedenza, puoi cercare file in base alle autorizzazioni impostate per il file con il comando find in Linux. Ora ti mostreremo come visualizzare i file di proprietà di un particolare utente. La sintassi di base rimane per lo più la stessa ad eccezione del nuovo flag -user che specifica il comando find per cercare i file di proprietà di quell’utente:
find <location> -type <search_item_type> -user <username>
Ad esempio, se vuoi vedere i file di proprietà dell’utente ‘test’ nella directory corrente, usa questo comando:
find . -type f -user test

8. Utilizzo del comando find con il flag -exec
Con il flag -exec, puoi eseguire i veri comandi della shell con il comando find e quindi aumentare le sue funzionalità più volte. Il flag -exec esegue i comandi della shell su ogni risultato di ricerca restituito. La sintassi di base per utilizzare il comando find con il flag -exec è:
find <location> <options> -exec <shell_command> {} ;
Nella sintassi precedente, le {} vengono utilizzate per inserire i risultati della ricerca trovati dal comando find all’interno del comando shell. Un esempio lo renderà più chiaro.
Supponiamo che tu voglia copiare un file chiamato test.txt all’interno della directory corrente in /tmp/docs/, usa questo comando:
find . -iname renaming.sh -exec cp {} ./testing \;
Nell’esempio precedente, quando “renaming.sh
” viene trovato, viene inserito direttamente al posto del “{}
” dove viene seguita la normale procedura di copia. L’ultimo punto e virgola (;) delimita la fine del comando.

Vediamo ora come vengono gestiti più file dal flag -exec. Supponiamo che tu voglia spostare tutti i file .pdf nella directory corrente in una nuova directory denominata “ftesting” nella home directory, puoi usare questo comando:
find .-name "*.pdf" -exec mv {} ./testing + \;

Se vuoi rinominare usando il comando mv, consulta il nostro articolo su come rinominare un file in Linux in cui abbiamo discusso quattro diversi metodi per rinominare i file.
9. Trova ed elimina file e directory in Linux
A volte potrebbe essere necessario eliminare file/directory specifici in Linux. Penseresti che sia necessario scrivere uno script di shell complicato per questo. Tuttavia, con la potenza del comando -exec, puoi facilmente eliminare file o directory filtrati dai comandi find in base alle regole specificate. La sintassi di base per eliminare i file utilizzando il comando find è:
find <location> <options> -type <search_item_type> -exec rm -vf {} ;
Alcuni utenti potrebbero trovare difficile comprendere il comando precedente. Per semplificare le cose, puoi utilizzare il flag -delete invece dell’intera parte -exec per eliminare gli elementi. La sintassi per eliminare i file utilizzando il flag -delete con il comando find in Linux è:
find <location> <options> -type <search_item_type> -delete
Elimina file e directory con il nome esatto
L’eliminazione di un file/directory funziona come l’utilizzo del comando find per cercarlo. La sintassi per eliminare un file utilizzando find è:
find <location> <options> -type <search_item_type> -name <file_to_delete> -delete
Supponi di voler eliminare il file “test.txt” nella directory corrente, puoi utilizzare questo comando come:
find . -type f -name test.txt -delete

Elimina file con nome parzialmente corrispondente
Se elimini un file e tutto ciò che riesci a ricordare è una parte del nome, puoi utilizzare i caratteri jolly per trovare tutti i tipi di nomi corrispondenti al nome del file specificato. La sintassi per eliminare file e directory con un nome parziale con il comando find in Linux è:
find <location> <options> -type <search_item_type> -name <name_with_wildcard> -delete
Ad esempio, per eliminare tutti i file che iniziano con il nome “test”, utilizzare questo comando:
find . -type f -name "test*" -delete

Elimina i file con la stessa estensione
Quando devi eliminare tutti i file con la stessa estensione in una directory, tutto ciò che devi fare è aggiungere il flag -delete alla fine. La sintassi per eliminare tutti i file con le stesse estensioni è:
find <location> -type f -name "*.<extension>" -delete
Ad esempio, se desideri eliminare tutti i file .pdf nella directory corrente, puoi utilizzare questo comando:
find . -type f -name "*.pdf" -delete
Se vuoi conoscere altri modi per eliminare file e directory in Linux, consulta gli articoli su come eliminare un file in Linux e come eliminare una directory in Linux. Ti consigliamo di eseguire sempre prima il comando find senza il flag delete. Una volta che sei soddisfatto dei risultati, puoi applicare il flag -delete per eliminare definitivamente gli elementi.
Elimina file e directory vuoti con il comando find
L’eliminazione di file e directory vuoti è abbastanza semplice. Aggiungi semplicemente il flag -delete alla fine affinché il comando trovi cartelle e file vuoti in Linux. La sintassi per eliminare file e cartelle vuoti è:
find <location> -type <search_item_type> -size 0 -delete
