La ricerca di file è relativamente facile quando si utilizza una GUI. Ma in alcuni ambienti come i server senza GUI, è necessario cercare i file utilizzando la riga di comando.
C'è un potente comando in Linux che ti aiuta a cercare file e cartelle chiamato find
. In questo articolo, discuteremo del find
comando con alcuni esempi.
Cos'è il comando find in Linux?
Il find
Il comando consente di cercare in modo efficiente file, cartelle e dispositivi di caratteri e blocchi.
Di seguito è riportata la sintassi di base di find
comando:
find /path/ -type f -name file-to-search
Dove,
/path
è il percorso in cui dovrebbe essere trovato il file. Questo è il punto di partenza per cercare i file. Il percorso può anche essere/
o.
che rappresentano rispettivamente la directory principale e quella corrente.-type
rappresenta i descrittori di file. Possono essere uno dei seguenti:
f
– File normale come file di testo, immagini e file nascosti.
d
– Rubrica . Queste sono le cartelle in esame.
l
– Link simbolico . I collegamenti simbolici puntano a file e sono simili alle scorciatoie.
c
– Dispositivi a caratteri . I file utilizzati per accedere ai dispositivi dei caratteri sono chiamati file dei dispositivi dei caratteri. I driver comunicano con i dispositivi a caratteri inviando e ricevendo singoli caratteri (byte, ottetti). Gli esempi includono tastiere, schede audio e mouse.
b
– Blocca dispositivi . I file utilizzati per accedere ai dispositivi a blocchi sono chiamati file dei dispositivi a blocchi. I driver comunicano con i dispositivi a blocchi inviando e ricevendo interi blocchi di dati. Gli esempi includono USB, CD-ROM
-name
è il nome del tipo di file che vuoi cercare.
Esempi del comando trova
Ora conosciamo la sintassi di find
comando, diamo un'occhiata ad alcuni esempi.
Come cercare i file per nome o estensione
Supponiamo di dover trovare i file che contengono "stile" nel loro nome. Useremo questo comando:
find . -type f -name style*
Risultato
Ora supponiamo di voler trovare file con un'estensione particolare come .html
. Modificheremo il comando in questo modo:
find . -type f -name *.html
Risultato
Come cercare file nascosti
I file nascosti sono rappresentati da un punto all'inizio del nome del file. Normalmente sono nascosti, ma possono essere visualizzati con ls -a
nella directory corrente.
Possiamo modificare il find
comando come mostrato di seguito per cercare i file nascosti.
find . -type f -name ".*"
Risultato
Come cercare file di registro e file di configurazione
I file di registro di solito hanno l'estensione .log
, e possiamo trovarli così:
find . -type f -name "*.log"
Risultato
Allo stesso modo, possiamo cercare file di configurazione come questo:
find . -type f -name "*.conf"
Come cercare altri file per tipo
Possiamo cercare file di blocchi di caratteri fornendo c
a -type
:
find / -type c
Allo stesso modo, i file di blocco del dispositivo possono essere trovati utilizzando b
:
find / -type b
Come cercare nelle directory
Nell'esempio seguente, troviamo le cartelle denominate lib
. Nota che stiamo usando -type d
.
find . -type d -name "lib*"
Risultato
💡 Suggerimento:possiamo identificare le directory guardando il d
flag nell'output di ls -lrt
.
Come cercare i file per dimensione
Un uso incredibilmente utile di find
il comando consiste nell'elencare i file in base a una dimensione particolare.
find / -size +250MB
Altre unità includono:
G
:GigaByte.M
:Megabyte.K
:KiloByteb
:byte.
Basta sostituire
find <directory> -type f -size +N<Unit Type>
Come cercare i file per ora di modifica
find /path -name "*.txt" -mtime -10
- -mtime +10 significa che stai cercando un file modificato 10 giorni fa.
- -mtime -10 significa meno di 10 giorni.
- -mtime 10 Se salti + o – significa esattamente 10 giorni.
Di seguito sono riportati i contenuti della mia home directory:
Applichiamo un esempio nella mia home directory.
find . -type f -name ".*" -mtime +10
Esempi pratici di find
con script bash
Possiamo combinare find
con rm
o mv
per creare script bash significativi che possono essere automatizzati.
Supponiamo di voler creare uno script che sposti i file di registro più vecchi di 7 giorni in un percorso di backup. Da lì, elimina i file di registro più vecchi di 30 giorni. Possiamo creare uno script e programmarlo con cron
. Puoi saperne di più su cron
lavori qui.
Vediamo lo script:
#!/bin/bash
# Script to move from logs older than 7 days to backup logs path: /app/backup_logs/ESB0*
# move ESB01 logs to backup
find /logs/esb01/audit -name "*.tar.gz" -mtime +7 -exec mv {} app/backup_logs/ESB01/ \;
# Remove logs from backup path after 30 days
find /app/backup_logs/ESB01 -name "*.tar.gz" -mtime +30 -exec rm {} \;
Nota che stiamo usando exec
con find
. Fondamentalmente, exec
esegue il comando fornito ( mv
e rm
nel nostro caso). {}
è il segnaposto che contiene i risultati del comando. Infine, forniamo il delimitatore ;
. Poiché non vogliamo che la shell interpreti il punto e virgola, esciamo con \
.
Lo script condiviso è molto utile per archiviare e rimuovere i log.
Conclusione
In questo articolo abbiamo studiato il find
comando in dettaglio e imparato a cercare i file per nome, tipo, dimensione e tempo di modifica.
Spero che questo tutorial ti sia stato utile.
Condividi i tuoi pensieri su Twitter!
Puoi leggere i miei altri post qui.
Risorse:immagini banner dalle illustrazioni di Office di Storyset e Canva.