40 migliori esempi di comando Trova in Linux

Il comando find di Linux è un potente strumento che consente agli amministratori di sistema di individuare e gestire file e directory in base a un’ampia gamma di criteri di ricerca. Può trovare directory e file in base al loro nome, tipo o estensione, dimensione, autorizzazioni, ecc.

Oltre a individuare file e directory, la combinazione del comando find con altri consente di agire sui risultati. L’aggiunta dell’opzione -exec consente agli amministratori di sistema di eseguire comandi esterni ed eseguire azioni come copiare, spostare, eliminare o modificare le autorizzazioni dei file che corrispondono ai criteri specificati come dimensione, nome, ecc.

In questo articolo, inizieremo spiegando i comandi find di base di Linux con esempi. Questo ti mostrerà come trovare file e directory. Ti mostreremo quindi come utilizzare l’opzione -exec per agire sui file o sulle directory in base alla loro dimensione, autorizzazioni, ecc.

La sintassi generale per il comando find è

find {path} {name -of-file or dir-to-search} {action-to-take}

Dove,

  • percorso specifica la directory.
  • name-of file or dir-to-search : nome del file o della directory da cercare
  • azione da intraprendere: come copiare, eliminare, spostare, ecc.

In questo tutorial, spiegheremo come individuare file e directory che corrispondono a modelli specificati. Vedremo anche come eseguire azioni sui file o sulle directory individuate dal comando find. La guida è basata su Ubuntu ma è applicabile alla maggior parte delle distribuzioni e versioni di Linux.

Sommario:

Trova file e directory

Trova file specifici per nome o estensione

Per cercare un file specifico, eseguire il seguente comando dalla radice (/). Il comando contiene il nome esatto del file che stai cercando.

find . -name file22.txt

Produzione

./test/file22.txt
./sales/file22.txt

Tieni presente che i risultati includono il percorso. Questo è importante se non conosci la directory in cui si trova il file o quando si trova in più di una posizione.

Puoi anche cercare il file in un’altra directory mentre sei ancora nella posizione corrente. In questo caso, è necessario fornire il percorso della directory in cui si desidera eseguire la ricerca.

find ./test -name file22.txt

Alla ricerca di file specifici in un’altra directory

Nel nostro caso, cercheremo tutti quelli che iniziano con il file delle lettere nella directory del test.

find ./test -name file*

Produzione

./test/file22.txt
./test/file30.doc
./test/file1.txt
./test/file5,doc

Cerca i file per estensione

Per trovare un file in Linux con una certa estensione, aggiungilo al comando.

find . -name *.txt

Produzione

./test/subtest/subfil.txt
./test/file22.txt
./test/file1.txt
./home1/files32.txt
./home2/file22.txt
./qa/tags.txt

Trova file e directory per nome

Utilizzare il comando seguente per cercare file e directory che iniziano con le lettere qa. Nel nostro computer abbiamo i file qatree.txt e qa.txt oltre a una directory dal nome qa.

  Come utilizzare il comando mkfs su Linux

Se eseguiamo il comando;

find ./ -name "qa*"

Restituisce il seguente output

./test/qatree.pdf
./test/qa.txt
./home/qa

Il comando restituisce sia i file che le directory corrispondenti ai criteri di ricerca. Per trovare solo file o directory, è necessario specificarlo nel comando.

Trova solo file o directory

Solo per i file, utilizzare l’opzione type f.

Solo file

find ./ -type f -name "qa*"

Produzione

./test/qatree.pdf
./test/qa.txt

Solo directory

Aggiungere l’opzione type d per individuare solo le directory.

find ./ -type d -name "qa*"

Produzione

./home/qa

Comando di ricerca senza distinzione tra maiuscole e minuscole

Tutte le ricerche con l’opzione -name fanno distinzione tra maiuscole e minuscole e non daranno risultati con lettere maiuscole. Per ottenere tutti i casi, utilizzare l’opzione -iname.

find ./ -iname "qa*"

Produzione

./test/qatree.pdf
./test/qa.txt
./test/QAtest.txt
./home/qa

Cerca un file da più directory

Per trovare i file in directory diverse, aggiungi i loro percorsi nel comando. Nel nostro caso, controlleremo le directory test e numeric.

find ./test ./numeric -name file22.txt -type f

Produzione

./test/file22.txt
/root/numeric/file22.txt

Trova più file con estensioni diverse da tutte le directory

È possibile utilizzare il comando find per individuare più file che condividono le diverse estensioni come *.doc, *.txt *.pdf, ecc. Questo può essere fatto separatamente, un’estensione alla volta o utilizzando un solo comando che includa tutti le estensioni desiderate.

trova . -tipo f ( -nome “*.txt” -o -nome “*.pdf” -o -nome “*.doc” )

produzione

./test/subtest/subfil.txt
./test/qatree.pdf
./test/file22.txt
./test/qa.txt
./test/file30.doc
./books/acro.pdf
./data1/FILE22.txt
./docs/files32.txt

Trova i file contenenti un determinato testo

A volte, si desidera accedere a un file contenente un determinato testo ma non si riesce a ricordarne il nome o la posizione. Questo comando ti consente di trovare tutti i file contenenti il ​​testo di destinazione.

Per cercare tutti i file contenenti la parola iperconvergenza”, utilizzare;

find / -type f -exec grep -l -i "hyperconvergence" {} ;

Produzione

/root/numeric/hci
/root/HCIP

L’opzione –i consente al comando di ignorare i casi e troverà il testo in maiuscolo o meno, ad esempio hyperconvergence, Hyperconvergence , ecc.

Per cercare i file in una directory specifica, aggiungili semplicemente al comando

find ./numeric -type f -exec grep -l -i "hyperconvergence" {} ;

Produzione

./numeric/hci

Esplora altri esempi di comando grep.

Trova file e directory in base alle dimensioni

Puoi trovare tutti i file o le directory più piccole, uguali o maggiori di una certa dimensione, all’interno di un certo intervallo o vuote. Utilizzare il formato di dimensione appropriato a seconda del tipo di file o directory che si sta cercando.

Le opzioni di dimensione includono;

c – byte

k – kilobyte

M – Megabyte

G – Gigabyte

Trova file di una certa dimensione, pari a 30 MB

Per cercare trova tutti i file da 30 MB

find / -size 30M

Trova file più grandi di una dimensione specificata

find -size +2M

Produzione

. /Downloads/ubuntu18043.iso 
./.cache/pip/http/6/e/3/8/3/6e38383f41850c3e5705d48116bc52f81b92a80500f414305057 7a9c

Trova file inferiori a 10 MB nella directory corrente

find . -type f -size -10M

Trova file con dimensioni comprese tra 100 e 200 MB

Quando si cercano file all’interno di un intervallo specifico, ad esempio tra 100 e 200 MB

find / -size +100M -size -200M

Cerca directory più grandi di 20kb

find / -type d -size +20k

Trova file e directory vuoti.

File

find ./ -type f -size 0

o

find ./ -type f –empty

Directory

find ./ -type d –empty

Trova i file in base all’età o all’ora di modifica

Trova i file più vecchi di n giorni

find /path/ -type f -name '*.txt' -mtime +8

Il -mtime +8 cercherà i file txt più vecchi di 8 giorni.

Per data di modifica

Questo cercherà i file modificati nelle ultime 17 ore

find . -mtime -17 -type f 

Cerca le directory modificate negli ultimi 10 giorni

find . -mtime -10 -type d 

Trova i file in base all’accesso o alla modifica

Trova i file in base alla data o all’ora di accesso. Ciò ti consente di vedere i file a cui è stato effettuato o non è stato effettuato l’accesso entro un periodo specificato.

  Come giocare a Trine 3 su Linux

Per visualizzare i file a cui non è stato effettuato l’accesso negli ultimi 10 giorni nella home directory.

find /home -atime +10

File consultati esattamente 10 giorni fa

find /home -atime 10

Accesso effettuato negli ultimi 10 giorni

find /home -atime -10

Trova i file modificati negli ultimi n giorni

Puoi anche cercare i file nella directory /home modificati negli ultimi 10 giorni usando il comando;

find /home -mtime -10 

Trova i file modificati entro un periodo specifico.

Ad esempio, tutti i file modificati tra 6 e 15 giorni fa nella home directory.

find /home -type f -mtime +6 -mtime -15

File e directory a cui è stato effettuato l’accesso negli ultimi 10 minuti

Per trovare i file a cui è stato effettuato l’accesso negli ultimi 10 minuti, utilizzare l’opzione -amin.

find . -amin -10 -type f

Produzione

./.bash_history
./[email protected]:~#

Directory a cui si è avuto accesso negli ultimi 10 minuti

find . -amin -10 -type d

Trova i file che corrispondono a autorizzazioni specifiche

Sintassi

$ find -perm mode

Dove mode è l’autorizzazione che può essere numerica come 644, 655, 700, 777, ecc. o lettere come u=x, a=r+x, ecc.

È possibile specificare la modalità nei seguenti tre modi diversi.

  • Senza prefisso quando si desidera trovare file con le autorizzazioni esatte specificate.
  • Con “-” per i file con almeno l’autorizzazione specificata. Ciò restituisce i file con le autorizzazioni superiori specificate e aggiuntive.
  • L’utilizzo di “/” richiede di specificare il proprietario o il gruppo con l’autorizzazione al file.
  • Trova i file con il permesso 777

    find -perm 777

    Produzione

    ./file1

    Trova i file con almeno 766
    trova -perm -766

    Produzione

    ./file2
    ./file1

    Il comando cerca tutti i file in cui il file

    • Il proprietario del file dispone dei permessi di lettura/scrittura/esecuzione.
    • Il gruppo dispone di autorizzazioni di lettura/scrittura
    • Altri hanno il permesso di lettura/scrittura

    Pertanto, restituisce due file che soddisfano questo criterio: file1 e file2. Non è necessario che i file dispongano delle autorizzazioni 766 esatte e possono averne altre della stessa durata, ma devono avere almeno quelle specificate.

    Trova i file scrivibili dal proprietario

    Useremo ora la “/” per cercare i file scrivibili dal loro proprietario, o gruppo, o altri.

    find -perm /222
    .
    ./file2
    ./file3
    ./file1

    Quanto sopra cerca i file scrivibili dal loro proprietario o gruppo.
    Questo restituisce file scrivibili da uno ma non necessariamente da entrambi. Per vedere i file, dove entrambi hanno permessi scrivibili, usa il prefisso –.

    find -perm -220

    Produzione

    ./file2
    ./file1

    Trova i file di proprietà di un utente

    Trova tutti i file di proprietà di Jack

    find /home -user jack

    Produzione

    /home/jack
    /home/jack/examples.desktop
    /home/jack/.gnupg
    /home/jack/.gnupg/private-keys-v1.d
    /home/jack/ans.cgi

    Trova file specifici di proprietà di un utente

    Trova tutti i file di testo di proprietà di Jack

    find /home -user jack -iname "*.txt"

    Produzione

    /home/jack/docs/file32.txt

    Trova ed elenca file e directory insieme ai loro permessi

    find -name "*.conf" | ls -l

    Produzione

    total 120
    drwxr-xr-x 2 root root 4096 Dec 31 13:19 backup2
    drwxr-xr-x 2 root root 4096 Jan 4 11:57 Desktop
    drwxr-xr-x 2 root root 4096 Dec 31 11:50 Documents
    drwxr-xr-x 2 root root 4096 Dec 31 12:27 Downloads
    -rw-r--r-- 1 root root 0 Jan 4 12:02 file22.doc
    drwxr-xr-x 2 root root 4096 Jan 4 12:14 file23
    -rw-r--r-- 1 root root 0 Jan 4 12:23 file23.txt

    Trova e agisci in base ai risultati

    In questa sezione vedremo come agire sui file che corrispondono al pattern specificato nel comando find.

    Trova i file e modifica i permessi

    Trova e modifica le autorizzazioni di determinati tipi di file. Nel nostro caso, lavoreremo con file PHP con autorizzazioni diverse come mostrato di seguito.

    [email protected]:~/ver$ ls -la
    
    total 8
    drwxrwxr-x 2 jack jack 4096 Jan 3 14:11 .
    drwxr-xr-x 8 jack jack 4096 Jan 3 14:05 ..
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 ans.php
    -rw-rw-r-- 1 jack jack 0 Jan 3 14:11 base.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 query.php
    -rw-rw-r-- 1 jack jack 0 Jan 3 14:11 qust.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 text.php
    -rw-rw-r-- 1 jack jack 0 Jan 3 14:11 vary.php

    Ora cercheremo tutti i file PHP (sopra) e sostituiremo i loro permessi con 755

    find ver -name "*.php" -type f -exec chmod 755 {} ;

    Il comando cerca i file PHP nella directory ver e quindi imposta la loro autorizzazione su 755 (rwxr-xr-x)

    Risultati

    [email protected]:~/ver$ ls -la
    total 8
    drwxrwxr-x 2 jack jack 4096 Jan 3 14:11 .
    drwxr-xr-x 8 jack jack 4096 Jan 3 14:05 ..
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 ans.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:11 base.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 query.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:11 qust.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:06 text.php
    -rwxr-xr-x 1 jack jack 0 Jan 3 14:11 vary.php

    Trova e modifica i permessi di file e directory

    Trova i file con autorizzazioni 644 e modificali per avere autorizzazioni 655

    find . -type f -perm 644 -exec chmod 655 {} ;

    Puoi anche cercare directory con autorizzazioni 644 e sostituirle con 755.

    find . -type d -perm 644

    Produzione

    ./docs   

    La cartella docs ha 644 permessi

    drwxrwxr-x 2 jack jack 4096 Jan 3 12:45 docs

    Per impostarlo su 755, corriamo

    find . -type d -perm 644 -exec chmod 755 {} ;

    Ora possiamo ricontrollare per vedere cos’è esattamente 755

    find . -type d -perm 755

    Produzione
    .
    ./docs

      Come giocare a Tyranny su Linux

    Dall’alto possiamo vedere che le directory root e docs hanno i permessi 755.

    Il comando Ls –la fornisce i seguenti dettagli

    drwxr-xr-x 2 jack jack 4096 Jan 3 12:45 docs

    Trova e copia file o directory

    Trova e copia un file specifico in una directory

    Il comando seguente troverà il file file22.txt e lo copierà nella directory ~/tmp/images.

    find -iname file22.txt -exec cp {} ~/tmp/images ;

    Trova e copia un tipo di file in una directory

    Per trovare file come immagini con estensione jpg nella directory corrente e copiarli in una posizione diversa come una cartella di immagini, utilizzare;

    find -iname '*.jpg' -exec cp {} ~/tmp/images ;

    Questo troverà e copierà tutti i file jpg nella cartella ~/tmp/images.

    Trova e copia un file in molte directory

    Trova e copia una singola in più directory.

    find ~/tmp/dir1/ ~/tmp/dir2/ $HOME/3/ -maxdepth 0 -exec cp ~/numeric/hci {} ;

    Questo troverà il file hci file e lo copierà nelle tre directory di /tmp/dir1/ /tmp/dir2/ e $HOME/3/

    Trova e sposta i file in una directory diversa

    Per spostare un file noto da una directory a un’altra. Per spostare il file universal.php;

    find ~/folder/ -type f -name universal.php -exec mv {} ~/numeric/ ;

    Cerca e sposta i file con una determinata estensione in una cartella diversa

    find ~/numeric/ -type f -name '*.php' -exec mv {} ~/folder/ ;

    Trova determinati file e spostati in una specifica cartella diversa

    find -type f -name uni*.* -exec mv {} ~/unifiles/ ;

    Il comando cerca tutti i file con nomi che iniziano con uni e hanno qualsiasi estensione. Quindi li sposta nella directory /unifiles/

    Trova e sposta i file in base all’età

    Trova e sposta i file più vecchi di giorni specificati in una posizione diversa come l’archivio.

    find /path/ -type f -name '*.pdf' -mtime +20 -exec mv {} /backup1/ ;

    Questo cercherà i file pdf più vecchi di 20 giorni e li sposterà nella directory backup1.

    Trova ed elimina file e directory

    La sintassi per trovare e rimuovere file o directory nella directory corrente è

    trova . -type f -name “file da cancellare” -exec rm -f {} ; per eliminare solo i file o

    trova . -type d -name “dir-to-delete” -exec rm -rf {} ; per eliminare solo le directory

    Trova ed elimina solo file specifici

    Per trovare ed eliminare i file che iniziano con til, utilizzare;

    find . -type f -name "til*" -exec rm {} ; 

    Per trovare ed eliminare le directory che iniziano con til

    find . -type d -name "til*" -exec rm {} ;

    Rimuovi sia i file che le directory

    find . -name "til*" -exec rm -rf {} ; 

    Questo rimuoverà sia i file che le directory che iniziano con le lettere til.

    Elimina per estensione

    Di seguito è riportato come individuare ed eliminare tutti i file txt nella directory corrente. Sostituisci il txt con un’altra estensione come bak, pdf o qualsiasi altra che desideri rimuovere.

    find . -type f -name "*.txt" -exec rm -f {} ;

    Nel caso in cui desideri che il sistema ti chieda di confermare prima di eliminare ogni file, aggiungi l’opzione -i come di seguito.

    find . -type f -name "*.txt" -exec rm -i {} ;

    Produzione

    rm: remove regular empty file './File22.txt'? y
    rm: remove regular empty file './file22.txt'? y
    rm: remove regular empty file './file23.txt'?

    Per impostazione predefinita, -rm non rimuoverà le directory ed è necessario utilizzare l’opzione –r per garantire una rimozione ricorsiva. Ciò garantisce l’eliminazione delle directory vuote e di quelle contenenti file. L’opzione -f forza la rimozione e viene utilizzata sia per i file che per le directory.

    Trova ed elimina i file più vecchi di n giorni

    Trova ed elimina i file di backup più vecchi di 20 giorni dalla directory corrente.

    find . -type f -name '*.bak' -mtime +20 -exec rm {} ;

    Questo eliminerà tutti i file .bak più vecchi di 20 giorni.

    Trova ed elimina solo le directory

    Per eliminare una directory chiamata dir22

    find . -type d -name dir22 -exec rm -rf {} ;

    Assicurati di abbinare maiuscole e minuscole al nome della directory o utilizza l’opzione -iname.

    find . -type d -iname Dir22 -exec rm -rf {} ;

    Rimuove sia Dir22 che dir22

    Per confermare prima dell’eliminazione, utilizzare l’opzione -i.

    find . -type d -iname Dir22 -exec rm -rf -i {} ;

    Produzione
    rm: rimuovere la directory ‘./Dir22’? n
    rm: rimuovere la directory ‘./dir22’? si

    Nel nostro caso, abbiamo digitato n per la directory Dir22 che non verrà eliminata e y per la dir22 che verrà ora rimossa.

    Trova e rimuovi i file vuoti

    È possibile utilizzare uno dei seguenti comandi per individuare i file vuoti ed eliminarli automaticamente.

    find ./ -type f -size 0 -exec rm -f {} ;

    o
    find ./ -type f -size 0 | xargsrm -f
    o
    find ./ -type f -size 0 –delete

    Trova e rimuovi le directory vuote

    Per rimuovere le directory vuote useremo l’opzione d.

    find ./ -type d -empty -exec rmdir {} ;

    Un’altra alternativa è usare delete invece di remove.

    find ./ -type d -empty -delete

    Tieni presente che l’eliminazione di file di sistema o critici dal tuo computer può danneggiare il sistema operativo o le applicazioni o portare alla perdita di dati importanti.

    Per evitare eliminazioni accidentali, è consigliabile utilizzare un account utente non root. Inoltre, assicurati di eliminare i file giusti che non sono utili e di disporre di un backup di tutti i file di dati per ogni evenienza.

    Qual è il prossimo?

    Vai avanti e prova i comandi Linux find sopra nel tuo laboratorio o ambiente NON PRODUTTIVO. Vedi se puoi usarne alcuni per automatizzare la pulizia del file system con Crontab. E, per padroneggiare Linux, dai un’occhiata a questo corso in linea.