Trova comando in Linux (Trova file e directory)
Il comandofind
è uno degli strumenti più potenti nell’arsenale degli amministratori di sistema Linux. Cerca file e directory in una gerarchia di directory basata su un’espressione data dall’utente e può eseguire l’azione specificata dall’utente su ciascun file abbinato.
È possibile utilizzare il comando find
per cercare file e directory in base alle loro autorizzazioni, tipo, data, proprietà, dimensione e altro ancora., Può anche essere combinato con altri strumenti come grep
osed
.
trovare la Sintassi del Comando #
La sintassi generale per il find
comando è la seguente:
-
options
attributo controlla il trattamento dei link simbolici, le opzioni di debug, e metodo di ottimizzazione. - L’attributo
path...
definisce la directory di partenza o le directory in cui find cercherà i file., - L’attributo
expression
è costituito da opzioni, modelli di ricerca e azioni separati da operatori.
Per cercare i file in una directory, l’utente che invoca il comando find
deve avere i permessi di lettura su quella directory.
Diamo un’occhiata al seguente esempio:
Trova i file per nome #
Trovare i file per nome è probabilmente l’uso più comune del comandofind
., Per trovare un file con il suo nome, usa l’opzione-name
seguita dal nome del file che stai cercando.
Per esempio, per la ricerca di un file chiamato document.pdf
nel /home/linuxize
directory, utilizzare il seguente comando:
Per eseguire una ricerca case-insensitive, modificare il -name
opzione -iname
:
Il comando di sopra match “del Documento.pdf”, ” DOCUMENTO.PDF” ..ecc.,
Trova file per estensione #
La ricerca di file per estensione equivale alla ricerca di file per nome. Per esempio, per trovare tutti i file che terminano con .log.gz
all’interno del tag /var/log/nginx
directory, digitare:
e ‘ importante ricordare che è necessario citare il modello o la fuga l’asterisco *
il simbolo con la barra rovesciata \
in modo che non venga interpretata dalla shell quando si utilizza il carattere jolly.,
Per trovare tutti i file che non corrispondono alla regex *.log.gz
è possibile utilizzare l’opzione -not
. Ad esempio, per trovare tutti i file che non terminano in *.log.gz
dovresti usare:
Trova i file per tipo #
A volte potrebbe essere necessario cercare tipi di file specifici come file regolari, directory o collegamenti simbolici. In Linux, tutto è un file.,div>: named pipe (FIFO)
s
: socketPer esempio, per trovare tutte le directory nella directory di lavoro corrente , utilizzare:
L’esempio comune sarebbe quello di cambiare ricorsivamente il sito web di autorizzazioni di file 644
e le autorizzazioni per la directory 755
con il chmod
comando:
Trovare i File per Dimensione #
Per trovare i file in base alla dimensione del file, passare il -size
parametro con i criteri di dimensione.,9fdb538a6b”>: blocchi da 512 byte (default)
c
: bytew
: due byte parolek
: KilobyteM
: MegabyteG
: GigabyteIl comando riportato di seguito troverete tutti i file esattamente 1024
byte all’interno del /tmp
directory:
find
comando consente inoltre di ricerca per i file che sono più o meno di una determinata dimensione.,
Nel seguente esempio, cerchiamo tutti i file inferiori a 1MB
all’interno della directory di lavoro corrente. Notare il meno -
simbolo prima che il valore di dimensione:
Se si desidera cercare i file con una dimensione maggiore di 1MB
, allora avete bisogno di usare il plus +
simbolo:
È possibile anche la ricerca di file all’interno di una gamma di dimensioni., Il seguente comando troverà tutti i file tra 1
e 2MB
:
Trova i file per data di modifica #
Il find
cerca anche i file in base alla loro ultima modifica, accesso o tempo di modifica.
Come quando si cerca per dimensione, utilizzare i simboli più e meno per “maggiore di” o “minore di”.
Diciamo che qualche giorno fa hai modificato uno dei file di configurazione di dovecot, ma hai dimenticato quale., È possibile filtrare facilmente tutti i file sotto il /etc/dovecot/conf.d
directory che termina con .conf
ed è stato modificato negli ultimi cinque giorni:
Ecco un altro esempio di filtrare i file in base alla data di modifica utilizzando il -daystart
opzione., Il comando riportato di seguito vi elenco tutti i file nel /home
directory che sono stati modificati 30
o più giorni fa:
Trovare i File da Autorizzazioni #
-perm
opzione ti consente di cercare file in base alle autorizzazioni di file.,
Per esempio, per trovare tutti i file con i permessi di esattamente 775
all’interno del tag /var/www/html
directory, utilizzare:
È possibile prefisso numerico con meno -
o slash /
.
Quando slash /
viene utilizzato come prefisso, almeno una categoria (utente, gruppo o altri) deve avere almeno i rispettivi bit impostati per far corrispondere un file.,
Considera il seguente comando di esempio:
Il comando precedente corrisponderà a tutti i file con le autorizzazioni di lettura impostate per utente, gruppo o altri.
Se minus-
viene utilizzato come prefisso, quindi affinché il file corrisponda, devono essere impostati almeno i bit specificati., Il comando seguente consente di cercare i file con permessi di scrittura e lettura per il proprietario e il gruppo e sono leggibili da altri utenti:
Trova File Proprietario #
Per trovare i file di proprietà di un particolare utente o gruppo, utilizzare il tag -user
e -group
opzioni.
Ad esempio, per cercare tutti i file e le directory di proprietà dell’utente linuxize
, dovresti eseguire:
Ecco un esempio reale., Diciamo che si desidera trovare tutti i file di proprietà dell’utente www-data
e modificare le proprietà dei file corrispondenti da www-data
nginx
:
Trova ed Elimina i File #
Per eliminare tutti i file corrispondenti, aggiungere il -delete
opzione al termine del match di espressione.
Assicurarsi di utilizzare questa opzione solo quando si è sicuri che il risultato corrisponda ai file che si desidera eliminare., È sempre una buona idea stampare i file corrispondenti prima di utilizzare l’opzione -delete
.
Ad esempio, per eliminare tutti i file che terminano con .temp
da /var/log/
, si dovrebbe usare:
-delete
con estrema cautela. Il comandofind
viene valutato come espressione e se si aggiunge prima l’opzione-delete
, il comando eliminerà tutto ciò che è al di sotto dei punti di partenza specificati.,Quando si tratta di directory,find
può eliminare solo directory vuote, comermdir
.
Conclusione #
Vi abbiamo mostrato come utilizzare il comandofind
con varie opzioni e criteri.
Questo articolo dovrebbe darti una comprensione fondamentale di come individuare i file sui tuoi sistemi Linux. Puoi anche visitare la pagina man find
e leggere tutte le altre potenti opzioni del comando find
.