find
è un comando per filtrare ricorsivamente gli oggetti nel file system basato su un semplice meccanismo condizionale. Utilizzare find
per cercare un file o una directory sul file system. Utilizzando il flag-exec
, i file possono essere trovati e immediatamente elaborati all’interno dello stesso comando.,
Find Linux Files by Name or Extension
Use find
from the command line to locate a specific file by name or extension., Nell’esempio seguente per *.err
file /home/username/
directory e sotto-directory:
find /home/username/ -name "*.err"
Si dovrebbe vedere un output simile nella console:
/home/username/example.errThe matching file in the /home/username/ directory is "example.err"
Comune di Linux a Trovare i Comandi e la Sintassi
find
comando di solito assume la seguente forma:
find options starting/path expression
-
options
attributo controlla il comportamento e il metodo di ottimizzazione del tagfind
processo., - L’attributo
starting/path
definisce la directory di livello superiore in cuifind
inizia il filtraggio. - L’attributo
expression
controlla i test che cercano la gerarchia di directory per produrre output.
Trova un file in Linux Usando il nome del file
Per trovare un file usando il nome del file, usa la sintassifind -name filename
. Omettendo il percorso cerca il file su tutto il disco., Per esempio, è possibile trovare un file chiamato example.err
si trova nel /home/username
directory con il seguente comando:
find -name example.err
Si dovrebbe vedere un output simile:
./username/example.err
Trovare un File nella Directory Corrente con il Comando Find
guarda l’esempio di struttura di directory e file. Sono indicati negli esempi di questa guida.,desidera cercare il file example.err
all’interno di una directory o sottodirectory, si può eseguire il seguente comando:
find . -name example.err
l’output simile al seguente:
./example.err./directory_1/example.err
L’uscita riflette directory_1
struttura di directory:
├── directory_1│ ├── subdirectory_1│ │ └── example.err│ └── example.err
Trovare i File di Immagine in Linux Utilizzando la Riga di Comando
Riferimento la struttura del file nella sezione precedente, c’è un immagine con nome image01.png
che si trova nella directory principale (/
)s della struttura di directory.,
Per trovare il file image01.png
, eseguire il seguente comando find
che individua tutti i .png
file memorizzati all’interno della /
directory.
find -name *.png
Si dovrebbe vedere un output simile:
./image01.png
Modificare il tipo di file di immagine e look per tutti i .jpg
file all’interno della directory principale (/
):
find -name *.jpg
L’output sarà simile a esempio., Fare riferimento alla struttura di directory di esempio nella sezione precedente per visualizzare la posizione del file.
./web_files/unnamed.jpg
Trovare un File Vuoto nella Directory Utilizzando la Riga di Comando
Per trovare un file vuoto nella directory utilizzando la riga di comando, eseguire il seguente comando:
find . -type f -empty
Se non si ottiene alcun risultato, quindi non c’è un file vuoto all’interno della directory corrente.
Opzioni e ottimizzazioni per la ricerca di file in Linux Utilizzando la riga di comando
La configurazione predefinita perfind
ignoralink simbolici., Se si desidera find
a seguire e a restituire i collegamenti simbolici, aggiungere il -L
opzione per il comando, come illustrato di seguito:
find -O3 -L /var/www/ -name "*.html"
Questo comando consente il massimo livello di ottimizzazione (-O3
) e permette find
a seguire i link simbolici (-L
). find
cerca nell’intero albero delle directory sotto/var/www/
i file che terminano con.html
.,
find
ottimizza la sua strategia di filtraggio per aumentare le prestazioni. Tre livelli di ottimizzazione selezionabili dall’utente sono specificati come -O1
, -O2
e -O3
. L’ottimizzazione-O1
è l’impostazione predefinita e costringefind
a filtrare in base al nome del file prima di eseguire tutti gli altri test.,
L’ottimizzazione a livello-O2
dà la priorità ai filtri dei nomi file, come in-O1
, quindi esegue tutti i filtri dei tipi di file prima di procedere con altre condizioni che richiedono più risorse. Livello-O3
ottimizzazione consentefind
per eseguire l’ottimizzazione più grave e riordina tutti i test in base alla loro spesa relativa e la probabilità del loro successo.,
Command | Description |
---|---|
-O1 |
Filter based on filename first (default). |
-O2 |
File name first, then file-type., |
-O3 |
Consente afind di riordinare automaticamente la ricerca in base all’uso efficiente delle risorse e alla probabilità. di successo |
-maxdepth X |
Cerca la directory corrente e tutte le sottodirectory X livelli in profondità. |
-iname |
Cerca senza riguardo per il caso di testo., |
-not |
Return only results that do not match the test case. |
-type f |
Search for files. |
-type d |
Search for directories., |
Trova i file in Linux per ora di modifica Usando la riga di comando
Il comandofind
può filtrare una gerarchia di directory in base all’ultima modifica di un file., Per esempio, il seguente comando consente di trovare qualsiasi file con il .err
estensione, che è stata modificata negli ultimi 7 giorni:
find / -name "*err" -mtime -7
L’esempio di comando restituisce il seguente output:
Uso di Grep per Trovare i File in Linux Utilizzando la Riga di Comando
find
comando è solo in grado di filtrare la gerarchia di directory basato su un nome file e metadati. Se hai bisogno di cercare in base al contenuto del file, usa uno strumento comegrep., Si consideri il seguente esempio:
find . -type f -exec grep "test" '{}' \; -print
Questo comando cerca ogni oggetto nell’attuale gerarchia di directory (.
) che è un file (-type f
) e poi esegue il comando grep "test"
per ogni file che soddisfa le condizioni. I file che corrispondono vengono stampati sullo schermo (-print
). Le parentesi graffe ({}
) sono un segnaposto per i risultati della corrispondenza di ricerca., Il {}
sono racchiusi tra virgolette singole ('
) per evitare di passaregrep
un nome di file malformato. Il comando-exec
termina con un punto e virgola (;
), che deve essere escape (\;
) per evitare l’interpretazione da parte della shell.
Il file utilizzato nell’esempio (example.err
) ha del testo al suo interno che dice “test”., Quando si esegue il comando di esempio, viene visualizzato un output simile:
Grep ha identificato ogni file all’interno della directory di lavoro corrente che contiene la stringa “test”.,
Nota
Prima di
find
comando per l’attuazione dell’-exec
opzione, si potrebbe generare un output simile all’esempio di cui sopra utilizzando ilxargs
comando:find . -type f -print | xargs grep "test"
Processo e Trovare i File Utilizzando il Comando Trova in Linux
-exec
opzione esegue comandi su ogni oggetto che soddisfa il find
espressione., Si consideri il seguente esempio:
find . -name "example.err" -exec chmod o+r '{}' \;
Questo filtra ogni oggetto nella gerarchia corrente (.
) per i file denominati rc.conf
ed esegue il chmod o+r
comando per modificare le autorizzazioni dei file del find
risultati del comando.
Il comando di esempio esegue ed esegue l’opzione -exec
nella directory principale del processo find
. Utilizzare -execdir
per eseguire il comando specificato nella directory in cui risiede la corrispondenza., Ciò può alleviare i problemi di sicurezza e produrre prestazioni migliori per alcune operazioni.
Le opzioni-exec
o-execdir
vengono eseguite senza ulteriori prompt. Se si preferisce essere richiesto prima dell’azione, sostituire-exec
con-ok
o-execdir
con-okdir
.
Come trovare ed eliminare file usando la riga di comando di Linux
Attenzione
Usa questa opzione con estrema cautela.,
Aggiungi l’opzione-delete
alla fine di un’espressione di corrispondenza per eliminare tutti i file che corrispondono. Utilizzare questa opzione quando si è certi che i risultati corrispondono solo ai file che si desidera eliminare.
Nell’esempio seguente, find
individua ricorsivamente tutti i file nella gerarchia a partire dalla directory corrente ed elimina tutti i file che terminano con .err
estensione:
find . -name "*.err" -delete
Hai ancora qualche domanda?,
Unisciti alla nostra community e pubblica le tue domande per altri appassionati di Linode e Linux per aiutarti.
Domande correlate: