androide

Come trovare file in Linux usando la riga di comando

Il comando "ls" su Linux: visualizzare file e cartelle e trovare gli ultimi file modificati

Il comando "ls" su Linux: visualizzare file e cartelle e trovare gli ultimi file modificati

Sommario:

Anonim

Il comando find è uno degli strumenti più potenti nell'arsenale degli amministratori di sistema Linux. Cerca file e directory in una gerarchia di directory in base a un'espressione data dall'utente e può eseguire azioni specificate dall'utente su ciascun file corrispondente.

È possibile utilizzare il comando find per cercare file e directory in base a autorizzazioni, tipo, data, proprietà, dimensioni e altro. Può anche essere usato in combinazione con altri strumenti come grep o sed .

Linux find Sintassi dei comandi

La sintassi generale per il comando find è la seguente:

find

  • L'attributo options controlla il trattamento dei collegamenti simbolici, delle opzioni di debug e del metodo di ottimizzazione. L'attributo path… definisce la directory o le directory di partenza in cui find cercherà i file. L'attributo expression è costituito da opzioni, modelli di ricerca e azioni separate da operatori.

Per cercare i file in una directory, l'utente che richiama il comando find deve disporre delle autorizzazioni di lettura per quella directory.

Diamo un'occhiata al seguente esempio:

find -L /var/www -name "*.js"

  • L'opzione -L (opzioni) indica al comando find di seguire i collegamenti simbolici. /var/www (percorso…) specifica la directory che verrà cercata. (Espressione) -name "*.js dice a find di cercare i file che terminano con .js (file JavaScript).

Trova file per nome

La ricerca di file per nome è probabilmente l'uso più comune del comando find . Per trovare un file usando il suo nome, l'opzione -name seguito il nome del file che stai cercando.

Ad esempio, per cercare un file chiamato document.pdf nella directory /home/linuxize dovresti usare il seguente comando:

find /home/linuxize -type f -name document.pdf

Per eseguire una ricerca senza distinzione tra maiuscole e minuscole, modificare l'opzione -name con -iname :

find /home/linuxize -type f -iname document.pdf

Il comando sopra corrisponderà a "Document.pdf", "DOCUMENT.pdf"..etc.

Trova file per estensione

La ricerca di file per estensione equivale alla ricerca di file per nome. Ad esempio, per trovare tutti i file che terminano con .log.gz nella .log.gz /var/log/nginx è possibile utilizzare:

find /var/log/nginx -type f -name '*.log.gz'

È importante ricordare che quando si utilizza il carattere jolly, è necessario citare il modello o sfuggire al simbolo asterisco * con la barra rovesciata \ modo che non venga interpretato dalla shell.

Per trovare tutti i file che non corrispondono a regex *.log.gz puoi usare l'opzione *.log.gz . Ad esempio, per trovare tutti i file che non finiscono in *.log.gz dovrai usare:

find /var/log/nginx -type f -not -name '*.log.gz'

Trova file per tipo

A volte potrebbe essere necessario cercare tipi di file specifici come file normali, directory o collegamenti simbolici. In Linux, tutto è un file.

Per cercare i file in base al loro tipo, utilizzare l'opzione -type e uno dei seguenti descrittori per specificare il tipo di file:

  • f : un file normale d : directory l : collegamento simbolico c : dispositivi a caratteri b : dispositivi a blocchi p : named pipe (FIFO) s : socket

Ad esempio, per trovare tutte le directory nella directory di lavoro corrente, utilizzare:

find. -type d

L'esempio comune sarebbe quello di modificare in modo ricorsivo le autorizzazioni del file del sito Web in 644 e le autorizzazioni della directory in 755 utilizzando il comando chmod :

find /var/www/my_website -type d -exec chmod 0755 {} ; find /var/www/my_website -type f -exec chmod 0644 {} ;

Trova file per dimensione

Per trovare i file in base alla dimensione del file, passare il parametro -size insieme ai criteri di dimensione. È possibile utilizzare i seguenti suffissi per specificare la dimensione del file:

  • b : blocchi da 512 byte (impostazione predefinita) c : byte w : parole a due byte k : Kilobyte M : Megabyte G : Gigabyte

Il seguente comando troverà tutti i file di esattamente 1024 byte all'interno della /tmp :

find /tmp -type f -size 1024c

Il comando find consente inoltre di cercare file di dimensioni maggiori o inferiori a una dimensione specificata.

Nel seguente esempio, stiamo cercando tutti i file inferiori a 1MB all'interno della directory di lavoro corrente. Notare il simbolo meno - prima del valore della dimensione:

find. -type f -size -1M

find. -type f -size +1M

Puoi anche cercare file all'interno di un intervallo di dimensioni. Il seguente comando troverà tutti i file tra 1 e 2MB :

find. -type f -size +1M -size 21M

Trova file per data di modifica

Il comando find può anche cercare i file in base all'ultima modifica, all'accesso o al tempo di modifica.

Come per la ricerca 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. Puoi facilmente filtrare tutti i file nella directory /etc/dovecot/conf.d che termina con .conf e sono stati modificati negli ultimi cinque giorni con:

find /etc/dovecot/conf.d -name "*.conf" -mtime 5

Ecco un altro esempio di filtraggio dei file in base alla data di modifica utilizzando l'opzione -daystart . Il comando seguente elencherà tutti i file nella directory /home che sono stati modificati 30 o più giorni fa:

find /home -mtime +30 -daystart

Trova file per autorizzazioni

L'opzione -perm consente di cercare file in base alle autorizzazioni dei file.

Ad esempio, per trovare tutti i file con autorizzazioni esattamente 775 nella directory /var/www/html , dovresti usare:

find /var/www/html -perm 644

È possibile aggiungere il prefisso alla modalità numerica con meno - o barra / .

Quando si usa slash / come prefisso, almeno una categoria (utente, gruppo o altri) deve avere almeno i rispettivi bit impostati affinché un file corrisponda.

Si consideri il seguente comando di esempio:

find. -perm /444

Il comando sopra abbinerà tutti i file con permessi di lettura impostati per utente, gruppo o altri.

Se meno - viene utilizzato come prefisso, è necessario impostare il file affinché corrisponda almeno ai bit specificati. Il seguente comando cercherà i file che dispongono dell'autorizzazione in lettura e scrittura per il proprietario e il gruppo e sono leggibili da altri utenti:

find. -perm -664

Trova file per proprietario

Per trovare file di proprietà di un determinato utente o gruppo, utilizzare le opzioni -user e -group .

Ad esempio, per cercare tutti i file e le directory di proprietà dell'utente linuxize , dovresti eseguire:

find / -user linuxize

Ecco un esempio del mondo reale. Supponiamo che tu voglia trovare tutti i file di proprietà dell'utente www-data e modificare la proprietà dei file corrispondenti da www-data a nginx :

find / -user www-data -type f -exec chown nginx {} ;

Trova ed elimina file

Per eliminare tutti i file corrispondenti, aggiungi l'opzione -delete alla fine dell'espressione di corrispondenza.

Assicurati di utilizzare questa opzione solo quando sei sicuro che il risultato corrisponda ai file che desideri 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/ dovresti usare:

find /var/log/ -name `*.temp` -delete Utilizzare l'opzione -delete con estrema cautela. La riga di comando trova viene valutata come espressione e se si aggiunge prima l'opzione -delete , il comando eliminerà tutto sotto i punti di partenza specificati.

Quando si tratta di directory, find può eliminare solo directory vuote come rmdir .

Conclusione

Ti abbiamo mostrato come usare il comando find 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 .

trova terminale