Il comando trova è una potente utilità di ricerca utilizzata per individuare i file in Linux e Unix come il sistema operativo. Può trovare file e directory in base a diversi criteri come nome, estensione, tipo, modifica e data di creazione, autorizzazioni, dimensioni, proprietario.
Trova può anche eseguire un'azione basata su un comando, ad esempio cercare file ed eseguire elimina, conteggio, ecc.
Questo tutorial si concentrerà sulla spiegazione del modo in cui utilizzare il comando trova e ti guiderà attraverso esempi.
Sintassi:
La sintassi di base di trova l'utilizzo del comando è il seguente:
find <directory-to-search> [OPTIONS] <find name,file,extension>
Il -H
e -L
le opzioni vengono utilizzate per gestire i collegamenti simbolici durante la ricerca, -P (non seguire collegamenti simbolici) e -L (segui collegamenti simbolici).
1. Trova un file per nome
Per trovare un file in base al suo nome , usa il comando trova con -name
opzione.
Supponendo che tu voglia cercare il file con nome 'nginx.yaml' nella directory Documenti, puoi eseguire il comando seguente:
$ find /Documents -name nginx.yaml
Questo troverà il file chiamato "nginx.yaml" in Documents/ e tutte le sottodirectory:
Inoltre, per cercare il file "nginx.yaml" nella directory corrente e in tutte le sue sottodirectory, eseguire:
$ find -name nginx.yaml
Il punto (.) dopo il comando trova indica di iniziare la ricerca dalla directory corrente:
$ find . -name nginx.yaml
2. Trova i file per estensione
Se vuoi cercare tutti i file per estensione , puoi usare il comando trova con -name
opzione che segue con *.
Ad esempio, puoi cercare tutti i file con estensione '.png' nella home directory eseguendo il comando seguente:
$ find $HOME -name *.png
3. Trova solo directory
Se vuoi cercare solo directory , puoi eseguire il comando trova con -type d
opzione.
Supponiamo di voler cercare tutte le directory nella cartella Documenti/, eseguiamo:
$ find /Documents -type d
4. Trova solo file
Esistono molti tipi diversi di file in Linux come:directory, collegamenti simbolici, socket, file normali, ecc. Se vuoi cercare solo file regolari , puoi eseguire il comando trova con l'opzione '-type f'.
Ad esempio, supponendo di trovare solo file nella directory corrente, eseguiamo:
$ find . -type f
5. Trova ed elimina
In alcune situazioni desideri trovare ed eliminare file/directory che non sono più necessari, puoi eseguire il comando trova con l'opzione '-delete'.
Ad esempio, trovare tutte le immagini con estensione *.png nella cartella Documenti/ e rimuoverle:
$ find /Documents -name *.png -delete
6. Trova i file con autorizzazioni specifiche
Se vuoi cercare tutti i file che hanno permessi specifici , puoi usare il comando trova Linux con l'opzione '-perm'.
Ad esempio, per trovare i file che hanno l'autorizzazione '755', eseguiamo:
$ find . -type f -perm 775 -exec ls -l {} \;
7. Trova file e directory per data/ora
Il comando trova di Linux ti consente di cercare file e directory per data/ora.
Puoi usare il comando trova con l'opzione '-mtime -N' per trovare i file che sono stati modificati per l'ultima volta 'N' giorni fa. Ad esempio, per cercare tutti i file che sono stati modificati negli ultimi 2 giorni nella directory corrente, eseguiamo:
$ find . -type f -mtime -2 -exec ls -l {} \;
Un altro modo per usare il comando trova per cercare file/directory per data/ora è usare l'opzione '-newerXY'. Dove X e Y possono essere:
a
- il tempo di accesso del file di riferimento
B
- l'ora di nascita del file di riferimento
c
- il tempo di modifica dello stato dell'inode del file di riferimento
m
- l'ora di modifica del file di riferimento
t
- refer viene interpretato direttamente come un'ora
Ad esempio, per cercare tutti i file modificati il 4 luglio 2020 nella directory corrente, eseguiamo:
$ find . -type f -newermt 2020-07-04 -ls
8. Trova file e directory per dimensione
Il comando trova di Linux ti consente di cercare file/directory in base alle dimensioni eseguendo il comando con l'opzione '-size'.
Supponendo di voler trovare file di dimensioni superiori a 1 GB, è possibile eseguire il comando seguente:
$ find . -type f -size +1G
Alcuni esempi pratici
01) Trova file/directory vuoti
Questo output elencherà tutti i file e le cartelle vuoti nella directory e nelle sottodirectory correnti:
$ find . -empty -ls
02) Trova tutti i file .jpg
$ find . -name *.jpg
03) Trova tutte le directory con l'autorizzazione 644
L'output mostra tutte le cartelle nella directory o sottodirectory corrente che hanno l'autorizzazione 644:
$ find . -type d -perm 644 -ls
04) Trova i file di proprietà di un utente specifico
Se vuoi controllare tutti i file di proprietà dell'utente "cas" nella directory corrente, puoi farlo come segue:
$ find . -user cas -ls
05) Trova i file per numero di inode
Per cercare un file in base al suo numero di inode, puoi usare trova con -inum
opzione. Ad esempio:
$ find -inum 534937
06) Conta il numero di file
$ find -type f -exec basename {} \; | wc -l
07) Conta il numero di directory
$ find -type d -exec basename {} \; | wc -l
08) Cerca file con una profondità particolare
Supponendo che tu voglia cercare il file "Dockerfile" nella cartella HOME e nelle sue sottodirectory e non nelle sottodirectory di livello successivo, devi impostare l'opzione '-maxdepth' su 2 come segue:
$ find $HOME -maxdepth 2 -name Dockerfile
Conclusione
Un altro potente strumento è il comando fd che è un'alternativa al comando trova.
In questo tutorial, abbiamo imparato come utilizzare il comando trova di Linux per cercare file e directory. Grazie per la lettura e per favore lascia il tuo suggerimento nella sezione commenti qui sotto.