Articolo originale: How to Search Files Effectively in the Linux Terminal
Ti sai mai sentito frustrato cercando manualmente dei file suo tuo computer? Se sei uno sviluppatore oppure un ingegnere DevOps che lavora su un server Linux che non dispone di un'Interfaccia Grafica Utente (GUI), sarà difficile spostarti avanti e indietro per cercare dei file.
Molte persone non sono consapevoli della potenza dei terminali Linux. Linux ha una riga di comando incredibilmente potente che ti consente di cercare file e directory in una frazione di secondo.
Che tu sia un principiante o un esperto, se stai cercando di portare le tue doti di gestione dei file al livello superiore, sei nel posto giusto. Questo articolo ti aiuterà a capire le basi della sintassi dei comandi find maggiormente usati in Linux.
Cos'è il Comando find
in Linux?
Il comando find
ti consente di cercare file e directory nel tuo computer. Aggiunge la flessibilità di cercare file in una directory specifica oppure ricorsivamente in tutte le sotto-directory.
Esploriamo la potenza del comando find
.
Come Cercare un File per Nome
Diciamo che hai salvato un file chiamato hello_world.html
da qualche parte e non ti ricordi neppure il nome della directory. Tuttavia il tuo capo ti chiede di inviargli il file immediatamente.
In genere, se ti dimentichi dove hai salvato il file, inizi a cercare cartella dopo cartella per vedere se trovi il file.
Ecco quando il comando find
funziona alla grande. Invece di cercare il file manualmente nel tuo computer, puoi usare il comando find
per automatizzare il processo.
Passando il nome del file all'opzione -name
, il comando find
cerca il file e ne restituisce la posizione.
find -name <nome_file>
find
per cercare file per nomeRicorda che con l'opzione -name
viene eseguita una ricerca che tiene conto delle minuscole/maiuscole. Per svolgere una ricerca che ignori se una lettera sia minuscola o maiuscola, puoi usare l'opzione -iname
.
find -iname <nome_file>
find
per eseguire una ricerca che ignora maiuscole/minuscolePuoi anche usare find
come alternativa al comando ls
in alcune situazioni. Diciamo che ti serve trovare tutti i file che hanno un'estensione .txt
. Puoi farlo con il comando find
usando un pattern di espressione regolare (*.txt
).
find /percorso/da/cercare -name "*.txt"
find
per cercare i file corrispondenti a un patternIl comando qui sopra elenca tutti i file con estensione .txt
nella tua directory corrente e sue sotto-directory.
Per trovare file con estensione .txt
in una specifica directory e sotto-directory sostituisci /percorso/da/cercare
con il percorso della directory dalla quale vuoi iniziare la ricerca, nell'esempio la directory corrente.
Come Cercare Directory in Linux
È possibile cercare una directory passando l'opzione d
al parametro -type
del comando find
.
find /percorso/da/cercare -type d
find
per trovare una directory
find
Nella videata qui sopra, c'è il risultato della ricerca di una directory chiamata zip
partendo dalla directory corrente.
In modo simile, l'opzione -type
accetta altri parametri che consentono di semplificare il nostro processo di ricerca.
f
trova i file normalib
trova i file di dispositivi a blocchic
trova i file di dispositivi a caratteril
trova i link simbolicis
trova i socketp
trova le named pipe
Come Cercare un File per Dimensione in Linux
Aggiungere l'opzione -size
al comando find
ti aiuta a trovare file in base alla loro dimensione. Anteponi un +
o un -
alla dimensione per rappresentare rispettivamente valori maggiori di o minori di.
find /percorso/da/cercare -size <dimensione_del_file>
find
per cercare file per dimensioneNella videata qui sopra stiamo cercando file con dimensione maggiore di 1 GB.
Puoi anche cercare i file che rientrano in uno specifico intervallo di dimensioni.
Per esempio, se vuoi trovare tutti i file che hanno dimensione maggiore di 50 MB e inferiore a 100 MB, puoi eseguire il seguente comando:
find /percorso/da/cercare -size +50M -size -100M
find
per cercare file in un intervallo di dimensioniPuoi specificare la dimensione nell'unità di misura che preferisci. Alcune di quelle a disposizione sono:
K
rappresenta KBM
rappresenta MBG
rappresenta GBb
rappresenta bytec
rappresenta blocchi
Come Cercare File in Base alla Data di Modifica
Ogni file ha una data/ora di creazione e ultima modifica associate. Supponiamo che tu abbia migliaia di file nella tua directory. Hai modificato un file negli ultimi due giorni ma hai dimenticato il suo nome. Ma sei sicuro che dopo quello hai modificato solo un altro paio di file.
In questi casi, puoi trovare tutti i file che sono stati modificati negli ultimi 7 giorni. Questo limita la ricerca da oltre 1000 file a un numero molto più gestibile. Riuscirai a trovare il file che hai modificato in pochi secondi dopo aver eseguito il comando.
Ciò è possibile usando l'opzione -mtime
del comando find
.
find /percorso/da/cercare -mtime <-numero_giorni_fa>
find
per cercare file modificati dopo una certa dataConsideriamo un altro caso, in cui la data odierna sia 10 febbraio 2023. Hai modificato un file prima del 3 febbraio 2023. Dopo quella data hai modificato molti file. Devi trovare il file che è stato modificato prima del 3 febbraio 2023. Praticamente devi cercare i file che sono stati modificati prima del 3 febbraio 2023.
Un caso un po' strano, vero?
Puoi eseguire questa ricerca con il comando find
, sostituendo il segno meno (-) con il segno più (+).
Ecco il comando modificato:
find /percorso/da/cercare -mtime +7
find
per cercare file modificati prima di una certa dataCome Eseguire un Comando sui File Filtrati dal Comando find
Il titolo di questa sezione potrebbe confonderti. Prima di svelare la risposta, cerchiamo di capire chiaramente il contesto con uno scenario reale.
Supponiamo di avere 1000 file in una directory, ed eseguendo il comando find
è stata trovata corrispondenza con 20 file. Vuoi spostare questi 20 file in una diversa directory. Come puoi farlo?
In termini semplici, dobbiamo eseguire un comando per ciascuno di questi file filtrati.
Puoi fare questo passando l'opzione -exec
al comando find
.
L'opzione -exec
esegue un comando su ciascun file che è stato trovato nella ricerca. L'opzione -exec
è seguita da un comando e dai suoi argomenti, con le parentesi graffe{}
che rappresentano i file che saranno elaborati.
Per rappresentare la fine del comando -exec
, dobbiamo aggiungere una barra rovesciata e un punto e virgola (\;
) .
Ecco la sintassi:
find /percorso/di/ricerca -name -exec {} \;
find
per eseguire un'operazione sui file filtratiCerchiamo di spostare i file filtrati dalla directory 5minslearn
alla directory zip
.
Ecco il comando:
find ./5minslearn -name "*.zip" -exec mv {} ./5minslearn/zip \;
Questo comando cerca tutti i file che hanno estensione .zip
nella directory ./5minslearn
e li sposta nella directory ./5minslearn/zip
.
L'opzione -exec
ti consente di eseguire una vasta gamma di operazioni sui file trovati. Puoi sostituire il comando di spostamento dell'esempio precedente con i comandi di copia, eliminazione o anche utilizzare il comando per cambiare i permessi del file.
Come Eseguire un Comando sui File Filtrati con una Conferma
Molte persone preferiscono usare questo comando se non sono sicure del modo nel quale verranno applicate le operazioni su ciascun file.
L'opzione -ok
è simile all'opzione -exec
a eccezione del fatto che richiede una conferma prima di eseguire l'operazione specificata su ciascun file. Questo comando è particolarmente utile per verificare quali file siano interessati prima di eseguire l'operazione specifica. Puoi anche annullare l'operazione se non sei sicuro o non la vuoi eseguire.
Per esempio, questa volta cerchiamo di spostare i file con estensione .txt
in un'altra directory.
find /percorso/da/cercare -name "*.txt" -ok mv {} /percorso/nuova/destinazione \;
find
per confermare prima di eseguire un'operazione sui file filtratiIl comando qui sopra cerca tutti i file con estensione .txt
nella directory ./5minslearn
e chiede all'utente di confermare prima di spostare ciascun file nella directory ./5minslearn/text_files
.
Per confermare l'operazione, digita yes
e no
per rinunciare e passare al file successivo.
L'opzione -ok
è utile quando vuoi essere cauto rispetto alle operazioni che devi effettuare sui file trovati, visto che ti consente di verificare ogni file e la sua posizione prima di eseguire il comando specifico.
Come Trovare File Visualizzando Informazioni Dettagliate
L'opzione -ls
del comando find
viene usata per visualizzare informazioni circa i file trovati nella ricerca, nel formato del comando ls
. Questa opzione fornisce informazioni dettagliate sui file, come i loro permessi, il proprietario, la dimensione, e l'ultima data di modifica.
find /percorso/da/cercare -name "*.<estensione_file>" -ls
find
per elencare i file con il formato del comando ls

ls
Come Trovare e Rimuovere File
Hai mai dovuto trovare file ed eliminarli dal tuo computer? L'opzione -delete
di find
fa questo per te. Ti consente di eliminare file che corrispondono a un certo criterio.
find . -name "*.<estensione>" -delete
Nell'esempio qui sopra puoi vedere che il comando find ha eliminato i file con estensione .html
.
Nota: questa operazione è irreversibile. Devi essere assolutamente sicuro quando esegui l'operazione di cancellazione.
Ti consiglio di eseguire il comando find
senza l'opzione -delete
una prima volta per assicurarti che vengano trovati solo i file che dovrebbero essere cancellati. Una volta che sei sicuro, puoi eseguire lo stesso comando aggiungendo l'opzione -delete
.
Conclusione
In questo articolo, hai imparato come cercare i file con efficacia usando il tuo terminale Linux.
Queste sono solo le opzioni base del comando find
che ogni sviluppatore dovrebbe conoscere. Credo che la padronanza dei fondamentali sia il primo passo per migliorare la conoscenza di Linux. Ho trattato delle basi su tutti i miei blog per aiutarti a creare solide fondamenta.
Per saperne di più su Linux, iscriviti alla mia newsletter via email sul mio sito e seguimi sui social media.