Come usare il comando find su Linux? 40 esempi inclusi

La ricerca è un potente strumento da riga di comando che consente agli amministratori di sistema di individuare e gestire file e directory in base a una vasta gamma di criteri di ricerca. Può trovare i file in base al loro nome, tipo o estensione, dimensione, permessi, 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 la copia, lo spostamento, l’eliminazione o la modifica delle autorizzazioni dei file corrispondenti ai criteri specificati come dimensione, nome, ecc..

In questo articolo, inizieremo spiegando i comandi di ricerca di base 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 alle loro dimensioni, autorizzazioni, ecc..

La sintassi generale per il comando find è

trova {percorso} {nome -di-file o dir-to-search} {azione-da-prendere}

Dove,

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

In questo tutorial, spiegheremo come individuare i file e le directory che corrispondono ai modelli specificati. Vedremo anche come eseguire azioni sui file o directory individuati dal comando find. La guida si basa su Ubuntu ma è applicabile alla maggior parte delle distribuzioni e versioni di Linux.

Contents

Trova file e directory

Trova file specifici per nome o estensione

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

trova . -name file22.txt

Produzione

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

Si noti 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 un posto.

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

trova ./test -name file22.txt

Ricerca di file specifici in un’altra directory

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

trova il file ./test -name *

Produzione

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

Cerca file per estensione

Per cercare file con una determinata estensione, aggiungilo al comando.

trova . -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 nonché una directory con il nome qa.

Se eseguiamo il comando;

trova ./ -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 di tipo f.

Solo file

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

Produzione

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

Solo directory

Aggiungi l’opzione di tipo d per individuare solo le directory.

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

Produzione

./ Home / qa

Comando find senza distinzione tra maiuscole e minuscole

Tutte le ricerche con l’opzione -name fanno distinzione tra maiuscole e minuscole e non danno 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 diverse directory, aggiungi i loro percorsi nel comando. Nel nostro caso, controlleremo le directory test e numeriche.

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 usando solo un comando che include tutto le estensioni desiderate.

trova . -type f (-name "*.testo" -o -name "*.PDF" -o -name "* .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 file contenenti determinati testi

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

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

trova / -tipo f -exec grep -l -i "hyperconvergence" {};

Produzione

/ Root / numerico / HCI
/ Root / HCIP

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

Per cercare i file in una directory specifica, è sufficiente aggiungerlo al comando

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

Produzione

./ Numerico / HCI

Trova file e directory in base alle dimensioni

Puoi trovare tutti i file o le directory che sono più piccoli, uguali o maggiori di una certa dimensione, entro un certo intervallo o vuoti. Utilizzare il formato della dimensione appropriata in base al tipo di file o directory che si sta cercando.

Le opzioni di dimensioni includono;

c – byte

k – kilobytes

M – Megabyte

G – Gigabyte

Trova file di una determinata dimensione, pari a 30 MB

Per cercare, trova tutti i file da 30 MB

trova / dimensioni 30M

Trova file più grandi di una dimensione specificata

trova -size + 2M

Produzione

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

Trova i file meno di 10 MB nella directory corrente

trova . -type f -size -10M

Trova file con dimensioni comprese tra 100-200 MB

Quando si cercano file in un intervallo specifico, ad esempio tra 100 e 200 MB

trova / -size + 100M -size -200M

Cerca directory più grandi di 20kb

trova / tipo d -size + 20k

Trova file e directory vuoti.

File

trova ./ -type f -size 0

o

find ./ -type f –empty

Elenchi

find ./ -type d –empty

Trova i file per età o tempo di modifica

Trova file più vecchi di n giorni

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

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

Per data di modifica

Questo cercherà i file modificati nelle ultime 17 ore

trova . -mtime -17 -type f

Cerca le directory modificate negli ultimi 10 giorni

trova . -mtime -10 -type d

Trova i file in base all’accesso o alla modifica

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

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

find / home -atime +10

File accessibili esattamente 10 giorni fa

find / home -atime 10

Accesso negli ultimi 10 giorni

find / home -atime -10

Trova i file modificati negli ultimi n giorni

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

trova / 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 accessibili negli ultimi 10 minuti

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

trova . -amin -10 -type f

Produzione

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

Directory accessibili negli ultimi 10 minuti

trova . -amin -10 -type d

Trova file che corrispondono a autorizzazioni specifiche

Sintassi

$ find -perm mode

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

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

  1. Senza prefisso quando si desidera trovare file con le autorizzazioni esatte specificate.
  2. Con “-“ per i file con almeno l’autorizzazione specificata. In questo modo vengono restituiti i file con le autorizzazioni specificate e ulteriori aggiuntive.
  3. L’uso di “/” richiede di specificare il proprietario o il gruppo con l’autorizzazione al file.

Trova file con permesso 777

trova -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 delle autorizzazioni di lettura / scrittura / esecuzione.
  • Il gruppo ha autorizzazioni di lettura / scrittura
  • Altri hanno l’autorizzazione in lettura / scrittura

Come tale, restituisce due file che soddisfano questo criterio: file1 e file2. Non è necessario che i file dispongano delle autorizzazioni 766 esatte e possano avere ulteriori autorizzazioni purché siano almeno quelle specificate.

Trova file scrivibili dal proprietario

Ora utilizzeremo “/” per cercare i file scrivibili dal loro proprietario, o gruppo o altri.

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

Quanto sopra cerca i file scrivibili dal proprietario o dal gruppo.
In questo modo vengono restituiti file scrivibili da entrambi ma non necessariamente da entrambi. Per vedere i file, dove entrambi hanno permessi scrivibili, usa il prefisso -.

trova -perm -220

Produzione

./ file2
./ file1

Trova file di proprietà di un utente

Trova tutti i file di proprietà di Jack

jack per trovare / home-user

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 "*.testo"

Produzione

/home/jack/docs/file32.txt

Trova ed elenca file e directory insieme alle loro autorizzazioni

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

Produzione

totale 120
drwxr-xr-x 2 root root 4096 31 dic 13:19 backup2
drwxr-xr-x 2 root root 4096 4 gennaio 11:57 Desktop
drwxr-xr-x 2 root root 4096 31 dicembre 11:50 Documenti
drwxr-xr-x 2 root root 4096 31 dicembre 12:27 Download
-rw-r – r– 1 root root 0 4 gen 12:02 file22.doc
drwxr-xr-x 2 root root 4096 4 gennaio 12:14 file23
-rw-r – r– 1 root root 0 4 gen 12:23 file23.txt

Trova e agisci sui risultati

In questa sezione, vedremo come agire sui file che corrispondono allo schema specificato nel comando find.

Trova i file e modifica le autorizzazioni

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

totale 8
drwxrwxr-x 2 jack jack 4096 3 gennaio 14:11 .
drwxr-xr-x 8 jack jack 4096 3 gennaio 14:05 ..
-rwxr-xr-x 1 jack jack 0 gen 3 14:06 ans.php
-rw-rw-r– 1 jack jack 0 gen 3 14:11 base.php
-rwxr-xr-x 1 jack jack 0 gen 3 14:06 query.php
-rw-rw-r– 1 jack jack 0 gen 3 14:11 qust.php
-rwxr-xr-x 1 jack jack 0 gen 3 14:06 text.php
-rw-rw-r– 1 jack jack 0 gen 3 14:11 variante.php

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

trova ver -name "* .php" -digitare 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
totale 8
drwxrwxr-x 2 jack jack 4096 3 gennaio 14:11 .
drwxr-xr-x 8 jack jack 4096 3 gennaio 14:05 ..
-rwxr-xr-x 1 jack jack 0 gen 3 14:06 ans.php
-rwxr-xr-x 1 jack jack 0 gen 3 14:11 base.php
-rwxr-xr-x 1 jack jack 0 gen 3 14:06 query.php
-rwxr-xr-x 1 jack jack 0 gen 3 14:11 qust.php
-rwxr-xr-x 1 jack jack 0 gen 3 14:06 text.php
-rwxr-xr-x 1 jack jack 0 gen 3 14:11 variante.php

Trova e modifica le autorizzazioni per file e directory

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

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

Puoi anche cercare directory con permessi 644 e sostituirlo con 755.

trova . -tipo d -perm 644

Produzione

./ docs

La cartella documenti ha 644 autorizzazioni

drwxrwxr-x 2 jack jack 4096 3 gen 12:45 doc

Per impostarlo su 755, eseguiamo

trova . -tipo d -perm 644 -exec chmod 755 {};

Ora possiamo ricontrollare per vedere esattamente cosa 755

trova . -tipo d -perm 755

Produzione
.
./ docs

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

Il comando Ls –la fornisce i seguenti dettagli

drwxr-xr-x 2 jack jack 4096 3 gen 12:45 doc

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.

trova -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, usare;

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.

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

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

Trova e sposta i file in un’altra directory

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 alcuni file e passa a una cartella specifica 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 dei 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 eliminare" -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 a partire da fino a, usa;

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

Per trovare ed eliminare le directory a partire da fino a

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

Rimuovere sia i file che le directory

trova . -nome "til *" -exec rm -rf {};

Ciò rimuoverà sia i file che le directory che iniziano con le lettere fino a.

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.

trova . -type f -name "*.testo" -exec rm -f {};

Nel caso in cui si desideri che il sistema richieda la conferma prima di eliminare ciascun file, aggiungere l’opzione -i come di seguito.

trova . -type f -name "*.testo" -exec rm -i {};

Produzione

rm: rimuovere il normale file vuoto ‘./File22.txt’? y
rm: rimuove il normale file vuoto ‘./file22.txt’? y
rm: rimuove il normale file vuoto ‘./file23.txt’?

Per impostazione predefinita, -rm non rimuoverà le directory ed è necessario utilizzare l’opzione –r per garantire una rimozione ricorsiva. Ciò garantisce la cancellazione di directory vuote e di quelle che contengono 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.

trova . -type f -name ‘* .bak’ -mtime +20 -exec rm {};

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

Trova ed elimina solo le directory

Per eliminare una directory chiamata dir22

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

Assicurarsi di abbinare il caso del nome della directory o utilizzare l’opzione -iname.

trova . -tipo d -nome Dir22 -exec rm -rf {};

Rimuove sia Dir22 che dir22

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

trova . -tipo d -nome Dir22 -exec rm -rf -i {};

Produzione
rm: rimuovere la directory “./Dir22”? n
rm: rimuovere la directory “./dir22”? y

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

Trova e rimuovi file vuoti

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

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

o
trova ./ -type f -size 0 | xargs rm -f
o
find ./ -type f -size 0 –delete

Trova e rimuovi directory vuote

Per rimuovere le directory vuote useremo l’opzione d.

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

Un’altra alternativa è utilizzare Elimina invece di Rimuovi.

find ./ -type d -empty -delete

Si noti che l’eliminazione del sistema o dei file critici dal computer può danneggiare il sistema operativo o le applicazioni o portare alla perdita dei dati importanti.

Per evitare cancellazioni accidentali, è consigliabile utilizzare un account utente non root. Inoltre, assicurati di eliminare i file giusti che non sono utili e di avere un backup di tutti i tuoi file di dati nel caso in cui.

Qual è il prossimo?

Vai avanti e provali nel tuo laboratorio o in ambiente NON PRODUCTION. Vedi se puoi usarne alcuni per automatizzare la pulizia del file system con Crontab. E, per padroneggiare Linux, dai un’occhiata a questo corso online.

TAGS:

  • Linux

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map