Articolo originale: How to Search Files Effectively in the Linux Terminal – Advanced Guide

Salve a tutti! Grazie per i fantastici feedback sul mio tutorial sulle basi del comando find. Dopo averlo letto, molti mi hanno chiesto di scriverne una versione avanzata.

Bene, eccola qui! È ora di portare le tue abilità al prossimo livello. In questo articolo, esploreremo versioni più avanzate del comando find.

Se stai imparando a conoscere il comando find, ho trattato le basi della ricerca dei file ed esplorato alcuni potenti comandi per trovare i file velocemente usando Linux nel mio precedente tutorial. Se non l'hai ancora letto e non hai familiarità con il comando find ti consiglio caldamente di leggere prima quello e poi tornare qui.

Come Cercare File di Proprietà dell'Utente

Il comando find accetta un argomento speciale chiamato -user che ti consente di filtrare i file di proprietà dell'utente (user).

La sintassi è questa:

find [percorso] -user [username] [opzioni]

Diciamo che vuoi cercare tutti i file di mia proprietà (il mio username su questo laptop è aruna). Lo puoi fare usando il comando seguente:

find ./5minslearn/ -user aruna
image-37
Ricerca di file di proprietà di un utente

Il comando qui sopra elencherà tutti i file il cui proprietario è aruna nella directory 5minslearn.

Potresti notare le [opzioni] aggiunte alla fine nella sintassi del comando. In pratica vuol dire che puoi aggiungere qualsiasi argomento per rendere la tua ricerca un po' più efficace.

Per esempio, proviamo a filtrare solo le directory delle quali sono proprietario. Per attivare un filtro di questo tipo devi aggiungere l'opzione -type . Ecco il comando:

find ./5minslearn/ -type d -user aruna
image-38
Trova le directory di proprietà dell'utente

Dalla videata qui sopra puoi vedere che il comando elenca solo le directory e sotto-directory di mia proprietà all'interno della directory 5minslearn.

Come Cercare File che Hanno Permessi Specifici

Usando l'argomento -perm, puoi cercare file che hanno permessi particolari.

Ecco la sintassi:

find [percorso] -perm [permessi] [opzioni]

Per esempio, ipotizziamo che tu voglia cercare tutti i file che hanno permessi di sola lettura nella directory corrente. Il codice per i file a sola lettura è 400.

Nota: se non conosci come viene generato questo codice (400) e sei curioso di saperlo, fai riferimento alla sezione "How can I remove permissions using Octal Mode?" nel mio blog Linux File Permission .

find . -perm 400
image-39
Trova file che hanno permessi di sola lettura

Ho creato il file welcome.txt con permessi di sola lettura diverso tempo fa. Puoi vedere dalla videata qui sopra che il comando find lo ha perfettamente identificato.

Vorrei condividere un'esperienza strana che ho affrontato nella mia carriera.

Stavo lavorando a un progetto che conteneva un gran numero (più di 200) file minimizzati. Tra questi, dovevo trovare tutti i file che non avevano permessi di sola lettura. Ero piuttosto sicuro che il numero sarebbe stato così basso che l'avrei potuto contare sulle dita di una sola mano.

Cercare tra oltre 200 file per trovarne un massimo di 5 è un processo che richiede tempo. Pertanto ho deciso di trovare un modo alternativo.

Ho cercato su Google e sono stato sorpreso dal risultato.

Ho imparato che avrei potuto farlo inserendo il flag -not prima dell'opzione -perm . Ecco il comando:

find . -not -perm 400

Il comando elenca tutti i file nella directory corrente che non hanno permessi di sola lettura.

image-40
Trovare tutti i file che non hanno permessi di sola lettura

Il vantaggio ulteriore è che puoi prefissare il flag -not prima di qualunque opzione del comando find per filtrare l'opposto della query di ricerca.

Ecco un altro esempio:

find . -not -type f

Eseguendo il comando qui sopra verranno elencati tutti gli elementi che non sono file (directory, link simbolici e così via) nella directory corrente.

Come Cercare File che Appartengono a un Gruppo Particolare

Come abbiamo visto nel mio tutorial precedente, potrebbero esserci più utenti che condividono un computer sul lavoro. Potrebbero essere raggruppati come Sviluppatori, ControlloQualità o altro.

Quindi, come fare se vuoi trovare tutti i file che gli utenti del gruppo Developers (sviluppatori) possono vedere? Difficile, giusto?

Non ti preoccupare. Ecco una semplice alternativa usando il comando find.

Con l'argomento -group del comando find puoi cercare tutti i file che appartengono a un gruppo.

La sintassi è questa:

find [percorso] -group [nomegruppo] [opzioni]

Ho un gruppo con il mio username sulla mia macchina. Cerchiamo i file che appartengono al mio gruppo.

find . -group aruna
image-41
Comando find per elencare tutti i file che appartengono a un gruppo

Puoi anche combinare l'opzione  -group con altre opzioni del comando find per restringere la ricerca.

Per esempio puoi combinare l'opzione -group con l'opzione -perm per cercare i file che appartengono a un gruppo e hanno permessi specifici.

find . -group aruna -perm 400
image-42
Trova tutti i file che appartengono a un gruppo e hanno permessi di sola lettura

Il comando qui sopra elencherà tutti i file di sola lettura che appartengono al gruppo aruna.

Alla stessa stregua, come detto in precedenza, puoi anche combinare l'opzione -group con l'opzione  -not per trovare i file che non appartengono a un particolare gruppo.

Proviamo a cercare i file che non appartengono al gruppo sudo.

find . -not -group sudo
Trova i file che non appartengono al gurppo `sudo`
Trova i file che non appartengono al gruppo sudo 

Come Trovare File Modificati più Recentemente di un Certo File

L'opzione -newer cerca i file che sono stati modificati dopo la data di ultima modifica di un dato file.

La sintassi è questa:

find [percorso] -newer [file_di_riferimento]

Per esempio, se vuoi cercare tutti i file che sono stati modificati dopo il file notes.txt puoi usare il comando seguente:

find . -newer notes.txt

Questo comando cercherà tutti i file nella directory corrente che sono stati modificati dopo il file notes.txt.

image-44
Trova file modificati più recentemente di un file di riferimento

Come Cercare File Aperti Pochi Minuti Fa

Per cercare file con con data di accesso di pochi minuti fa, puoi usare l'argomento -amin, che accetta numeri che esprimono minuti e trova i file con data di accesso di n minuti fa.

La sintassi è:

find [percorso] -amin [n] [opzioni]

Per esempio proviamo a trovare file con data di accesso che risale agli ultimi 30 minuti:

find . -amin -30
image-45
Trova tutti i file con data di accesso inferiore a 30 minuti

Spero tu abbia notato il segno negativo (meno) prima del numero. Indica che il valore deve avere avuto un accesso nel passato.

Come Cercare Tutti i File Vuoti

Puoi usare l'opzione -empty per cercare file e directory vuote.

Ecco la sintassi:

find [percorso] -empty [opzioni]

Per trovare tutti i file e directory vuote puoi usare il seguente comando:

find . -empty
image-46
Trova tutti i file e directory vuoti

Per cercare solo directory vuote, puoi combinare l'opzione  -empty con l'opzione  -type :

find . -type d -empty
image-47
Trova tutte le directory vuote

Questo comando elencherà tutte le directory vuote nella directory corrente.

Si può aggiungere l'opzione -delete all'opzione -empty  per eliminare tutti i file e le directory vuote.

Come Trovare File che Corrispondono a una Specifica Espressione Regolare

L'argomento -regex consente di applicare un filtro usando un'espressione regolare (RegEx).

La sintassi è questa:

find [percorso] -regex [espressione] [opzioni]

Per esempio ipotizziamo che tu voglia cercare i file il cui nome inizia con la lettera w. Puoi usare il seguente comando per farlo:

find . -regex "./w.*"
image-48
Trova tutti i file che corrispondono a una espressione regolare specificata

Conclusione

In questo articolo, hai imparato alcuni suggerimenti avanzati su come cercare file con efficacia ed eseguire varie operazioni su di essi.

Ti consiglierei di imparare il comando find provandolo. Identifica tu stesso qualche caso di utilizzo e cerca di trovare i file usando le tecniche che hai appreso.

Ti suggerisco alcune situazioni:

  • Trova e cancella i file che finiscono per .txt
  • Trova file dei quali non sei proprietario
  • Trova file che non corrispondono a un pattern
  • Trova tutti i file che iniziano per log- e hanno una dimensione tra 50MB e 100MB
  • Trova tutti i file che appartengono a un gruppo e che hanno avuto un accesso 10 minuti fa

Spero ti sia piaciuto leggere questo articolo!

Per leggere altri blog interessanti, iscriviti alla mia newsletter via email oppure al mio sito e seguimi sui social media.