Il comando Linuxfind
è un potente strumento 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 directory e file con il loro nome, il loro tipo o estensione, dimensione, autorizzazioni, ecc.
Oltre a localizzare file e directory, la combinazione del comandofind
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 corrispondenti ai criteri specificati come dimensione, nome, ecc.
In questo articolo, inizieremo spiegando i comandi di base di Linux find con esempi. Questo ti mostrerà come trovare file e directory. Vi 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 è
find {path} {name -of-file or dir-to-search} {action-to-take}
Dove,
In questo tutorial, spiegheremo come individuare file e directory corrispondenti a modelli specificati. Vedremo anche come eseguire azioni sui file o sulle directory che il comando find individua. La guida è basata su Ubuntu ma è applicabile alla maggior parte delle distribuzioni e versioni Linux.
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 si sta cercando.
find . -name file22.txt
Output
./test/file22.txt./sales/file22.txt
Si prega di notare che i risultati includono il percorso. Questo è importante se non si conosce 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.,
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 letters nella directory di test.
find ./test -name file*
Output
./test/file22.txt./test/file30.doc./test/file1.txt./test/file5,doc
Cerca file per estensione
Per trovare un file in Linux con una certa estensione, aggiungilo al comando.,
find . -name *.txt
Output
./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
Usa il comando seguente per cercare file e directory che iniziano con le lettere qa
. Nel nostro computer, abbiamo i fileqatree.txt
eqa.txt
e una directory con il nomeqa
.,
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’opzionetype f
.
Solo file
find ./ -type f -name "qa*"
Output
./test/qatree.pdf./test/qa.txt
solo directory
Aggiungere l’opzionetype d
per individuare solo le directory.,
find ./ -type d -name "qa*"
Output
./home/qa
Comando di ricerca senza maiuscolo/minuscolo
Tutte le ricerche con -name
sono case sensitive e non danno risultati con lettere maiuscole. Per ottenere tutti i casi, utilizzare l’opzione-iname
.
find ./ -iname "qa*"
Output
./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 directorytest
enumeric
.
find ./test ./numeric -name file22.txt -type f
Uscita
./test/file22.txt/root/numeric/file22.txt
Trovare più file con estensioni diverse da tutte le directory
È possibile utilizzare il comando trova per individuare più file che condividono le diverse estensioni come *.doc
*.txt
*.pdf
, etc. Questo può essere fatto separatamente, un’estensione alla volta, o utilizzando un solo comando che include tutte le estensioni desiderate.,
find . -type f ( -name "*.txt" -o -name "*.pdf" -o -name "*.doc" )
output
Trova file contenenti un determinato testo
A volte, si desidera accedere a un file contenente un determinato testo ma non è possibile richiamare il nome o la posizione del file. Questo comando 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" {} ;
Output
/root/numeric/hci/root/HCIP
L’opzione –i consente al comando di ignorare i casi e troverà il testo in maiuscolo o meno, ovvero iperconvergenza , Iperconvergenza, ecc.,
cercare il file in una directory specifica, è sufficiente aggiungere il comando
find ./numeric -type f -exec grep -l -i "hyperconvergence" {} ;
Uscita
./numeric/hci
Trova File e Cartelle in Base alle Dimensioni
È possibile trovare tutti i file o le directory che sono inferiori, pari o superiori a una certa dimensione, all’interno di un certo intervallo o vuoto. Utilizzare il formato formato appropriato a seconda del tipo di file o directory che si sta cercando.,nd file di una certa dimensione – pari a 30MB
Per Cercare di trovare tutti i 30MB file
find / -size 30M
Trova file di dimensione superiore a quella specificata
find -size +2M
Uscita
. /Downloads/ubuntu18043.iso ./.cache/pip/http/6/e/3/8/3/6e38383f41850c3e5705d48116bc52f81b92a80500f414305057 7a9c
Trova file meno di 10MB nella directory corrente
find . -type f -size -10M
Trova file con dimensioni tra i 100-200MB
Durante la ricerca di file all’interno di un determinato intervallo, ad esempio tra i 100 e i 200 MB
find / -size +100M -size -200M
Cercare le directory più di 20kb
find / -type d -size +20k
Trovare svuotare i file e le directory.,
File
find ./ -type f -size 0
o
find ./ -type f –empty
Directory
find ./ -type d –empty
Trova file per fasce di età o data di modifica
Individuare i file più vecchi di n giorni
find /path/ -type f -name '*.txt' -mtime +8
-mtime +8
cerca txt
file che sono di età superiore a 8 giorni.,
per data di modifica
Questo look per i file modificati negli ultimi 17 ore
find . -mtime -17 -type f
Guarda directory modificato negli ultimi 10 giorni
find . -mtime -10 -type d
Trova il file basati su accesso o la modifica
Individuare i file in base alla data o l’ora di accesso. Ciò consente di visualizzare i file a cui è stato effettuato o meno l’accesso entro un periodo specificato.
Per visualizzare i file a cui non è stato effettuato l’accesso negli ultimi 10 giorni nella directory home.,
find /home -atime +10
i File accessibili esattamente 10 giorni fa,
find /home -atime 10
Accedere negli ultimi 10 giorni
find /home -atime -10
Trovare tutti i file modificati negli ultimi n giorni
È anche possibile cercare il file nel /home
directory modificato negli ultimi 10 giorni, utilizzando il comando;
find /home -mtime -10
Trovare i file modificati entro un determinato periodo di tempo.
Ad esempio, tutti i file modificati tra 6 e 15 giorni fa nella directory home.,
find /home -type f -mtime +6 -mtime -15
File e directory a cui si accede negli ultimi 10 minuti
Per trovare i file a cui si accede negli ultimi 10 minuti, utilizzare l’opzione-amin.
find . -amin -10 -type f
Uscita
./.bash_history./.profileroot@ubuntu1804:~#
Directory accedere negli ultimi 10 minuti
find . -amin -10 -type d
Trovare i file che corrispondono a specifiche autorizzazioni
la Sintassi
$ find -perm mode
Dove è la modalità di autorizzazione che è numerici, ad esempio 644, 655, 700, 777
, ecc, o lettere come u=x, a=r+x,
etc.,
È 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 il permesso specificato. Questo restituisce i file con le autorizzazioni più elevate specificate e aggiuntive. - L’utilizzo di “” richiede di specificare il proprietario o il gruppo con l’autorizzazione al file.,
Trova file con permessi 777
find -perm 777
Uscita
./file1
Individuare i file con almeno 766
trova -perm -766
Uscita
./file2./file1
Il comando cerca tutti i file in cui l’
- Il proprietario del file in lettura/scrittura/esecuzione autorizzazioni.
- Il gruppo ha permessi di lettura/scrittura
- Altri hanno permessi di lettura/scrittura
In quanto tale, restituisce due file che soddisfano questo criterio: file1 e file2., I file non hanno bisogno di avere le autorizzazioni esatte 766
e possono avere quelle aggiuntive lunghe ma devono avere almeno quelle specificate.
Trova i file scrivibili dal proprietario
Ora useremo “/
” per cercare i file scrivibili dal proprietario, dal gruppo o da altri.
find -perm /222../file2./file3./file1
Quanto sopra cerca i file che sono scrivibili dal loro proprietario o gruppo.
Questo restituisce i file che sono scrivibili da entrambi, ma non necessariamente entrambi. Per visualizzare i file, in cui entrambi hanno autorizzazioni scrivibili, utilizzare il prefisso–.,
./file2./file1
Trovare i file di proprietà di un utente
Trovare tutti i file di Jack
find /home -user jack
Uscita
/home/jack/home/jack/examples.desktop/home/jack/.gnupg/home/jack/.gnupg/private-keys-v1.d/home/jack/ans.cgi
Trovare file specifici di proprietà di un utente
Trovare tutti i file di testo di proprietà di Jack
find /home -user jack -iname "*.txt"
Uscita
/home/jack/docs/file32.txt
Trova ed elenca i file e le directory insieme con i loro permessi
find -name "*.conf" | ls -l
Uscita
Trovare e agire sui risultati
In questa sezione, vedremo come è possibile agire sui file che corrispondono al pattern specificato nel comando.,
Trovare i file e modificare le autorizzazioni
Trovare e modificare le autorizzazioni di alcuni tipi di file. Nel nostro caso, lavoreremo con file PHP con autorizzazioni diverse come mostrato di seguito.,
vediamo ora di cercare tutti i file PHP (sopra) e sostituire loro con permessi 755
find ver -name "*.php" -type f -exec chmod 755 {} ;
Il comando cerca file PHP nel ver
directory e quindi imposta con il loro consenso 755
(rwxr-xr-x
)
Risultati
Trovare e modificare file e le autorizzazioni per la directory
Trova file con permessi 644 e cambiare loro di avere 655 permessi
find . -type f -perm 644 -exec chmod 655 {} ;
È anche possibile cercare le directory con permessi 644 e sostituire questo con 755.,
find . -type d -perm 644
Uscita
./docs
La cartella documenti è 644 permessi
drwxrwxr-x 2 jack jack 4096 Jan 3 12:45 docs
impostare 755
abbiamo run
find . -type d -perm 644 -exec chmod 755 {} ;
Ora siamo in grado di controllare di nuovo per vedere che cosa esattamente 755
find . -type d -perm 755
Uscita
.
./ docs
Dall’alto possiamo vedere che le directory root e docs hanno i permessi 755.,
Ls –la
comando fornisce le seguenti informazioni
drwxr-xr-x 2 jack jack 4096 Jan 3 12:45 docs
Trovare e copiare i file o le directory
Trovare e copiare un file specifico per una directory
Il comando riportato di seguito troverete il file22.tx
t file e copiarlo ~/tmp/images
directory.,
find -iname file22.txt -exec cp {} ~/tmp/images ;
Trova e copia di un tipo di file in una directory
Per trovare i file come immagini con jpg
estensione nella directory corrente e copiarli in una posizione diversa, come le immagini di una cartella, utilizzare;
find -iname '*.jpg' -exec cp {} ~/tmp/images ;
in Questo modo, trovare e copiare tutti i file jpg per il ~/tmp/images
cartella.
Trova e copia un file in molte directory
Trova e copia un singolo in più directory.,
find ~/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 universal.php
file;
find ~/folder/ -type f -name universal.php -exec mv {} ~/numeric/ ;
Cercare e spostare i file con una certa estensione in una cartella diversa
find ~/numeric/ -type f -name '*.php' -exec mv {} ~/folder/ ;
Trovare alcuni file e spostare in una specifica cartella diversa
find -type f -name uni*.* -exec mv {} ~/unifiles/ ;
Il comando cerca tutti i file con il nome che inizia con uni
e avere 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.,file e directory
La sintassi per la ricerca e la rimozione di file o directory, la directory corrente è
find . -type f -name "file to delete" -exec rm -f {} ;
per eliminare solo i file o
find . -type d -name "dir-to-delete" -exec rm -rf {} ;
per eliminare solo le directory
Trova ed elimina i file specifici solo
Per trovare ed eliminare i file che iniziano con til, utilizzare;
find . -type f -name "til*" -exec rm {} ;
Per trovare e cancellare le directory a partire til
find . -type d -name "til*" -exec rm {} ;
Rimuovere entrambi i file e le directory
find . -name "til*" -exec rm -rf {} ;
in Questo modo, rimuovere entrambi i file e le directory che iniziano con le lettere til.,
Elimina per estensione
Di seguito è riportato come è possibile individuare ed eliminare tutti i filetxt
nella directory corrente. Sostituire txt
con un’altra estensione come bak
, pdf
o qualsiasi altro che si desidera rimuovere.
find . -type f -name "*.txt" -exec rm -f {} ;
Nel caso in cui si desideri che il sistema richieda di confermare prima di eliminare ogni file, aggiungere l’opzione-i come di seguito.,
find . -type f -name "*.txt" -exec rm -i {} ;
Output
Per impostazione predefinita, -rm
non rimuoverà le directory ed è necessario utilizzare l’opzione –r
per garantire una rimozione ricorsiva. Ciò garantisce la cancellazione 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 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 cancellerà tutti i file .bak
più vecchi di 20 giorni.
Trova ed elimina solo le directory
Per eliminare una directory chiamatadir22
find . -type d -name dir22 -exec rm -rf {} ;
Assicurati di corrispondere al caso del nome della directory o usa l’opzione-iname
.
find . -type d -iname Dir22 -exec rm -rf {} ;
Rimuove sia Dir22
edir22
Per confermare prima della cancellazione, utilizzare l’opzione-i.
find . -type d -iname Dir22 -exec rm -rf -i {} ;
Uscita
rm: rimuovi directory ‘./ Dir22′?, n
rm: rimuovi directory’./ dir22′? y
Nel nostro caso, abbiamo digitato n
per la directory Dir22
che non verrà eliminata e y
per la dir22
che verrà ora rimossa.
Trovare e rimuovere 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
trova ./ – tipo f-dimensione 0 / xargs rm-f
o
trova .,/ – type f-size 0-delete
Find and remove empty directories
Per rimuovere le directory vuote useremo l’opzioned
.
find ./ -type d -empty -exec rmdir {} ;
Un’altra alternativa è usare delete invece di remove.
find ./ -type d -empty -delete
Si prega di notare che l’eliminazione di sistema o file critici dal computer può danneggiare il sistema operativo o le applicazioni o portare alla perdita dei dati importanti.
Per evitare eliminazioni accidentali, è consigliabile utilizzare un account utente non root., Inoltre, assicurarsi che si sta eliminando i file giusti che non sono utili e che si dispone di un backup di tutti i file di dati per ogni evenienza.
Quali sono le prospettive?
Vai avanti e prova i comandi di Linux find sopra nel tuo ambiente di laboratorio o NON PRODUZIONE. Vedere se è possibile utilizzare alcuni per automatizzare la pulizia del file system con Crontab. E, per padroneggiare Linux, dai un’occhiata a questo corso online.