GNU/Linux >> Linux Esercitazione >  >> Linux

Trova comando in Linux (Trova file e directory)

Il find command è 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 un'azione specificata dall'utente su ogni file corrispondente.

Puoi usare il find comando per cercare file e directory in base alle loro autorizzazioni, tipo, data, proprietà, dimensione e altro. Può anche essere combinato con altri strumenti come grep o sed .

find Sintassi del comando #

La sintassi generale per find il comando è il seguente:

find [options] [path...] [expression]
  • Le options l'attributo controlla il trattamento dei collegamenti simbolici, le opzioni di debug e il metodo di ottimizzazione.
  • Il path... attributo definisce la directory o le directory iniziali in cui find cercherà i file.
  • L'expression l'attributo è composto da opzioni, modelli di ricerca e azioni separate da operatori.

Per cercare i file in una directory, l'utente invoca il find il comando deve avere i permessi di lettura su quella directory.

Diamo un'occhiata al seguente esempio:

find -L /var/www -name "*.js"
  • L'opzione -L (opzioni) dice a find comando per seguire i collegamenti simbolici.
  • Il /var/www (percorso...) specifica la directory in cui verrà eseguita la ricerca.
  • L'(espressione) -name "*.js dice a find per cercare file che terminano con .js (file JavaScript).

Trova file per nome #

Trovare i file per nome è probabilmente l'uso più comune di find comando. Per trovare un file in base al suo nome, usa il -name opzione seguita dal nome del file che stai cercando.

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

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

Per eseguire una ricerca senza distinzione tra maiuscole e minuscole, cambia il -name opzione 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 all'interno di /var/log/nginx directory, dovresti digitare:

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

È importante ricordare che devi citare il modello o evitare l'asterisco * simbolo con barra rovesciata \ in modo che non venga interpretato dalla shell quando usi il carattere jolly.

Per trovare tutti i file che non corrispondono all'espressione regolare *.log.gz puoi usare il -not opzione. Ad esempio, per trovare tutti i file che non terminano con *.log.gz useresti:

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, usa il -type opzione 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 :blocca i dispositivi
  • p :named pipe (FIFO)
  • s :presa

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

find . -type d

L'esempio comune potrebbe essere quello di modificare ricorsivamente le autorizzazioni del file del sito Web in 644 e autorizzazioni di directory per 755 usando il chmod comando:

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, passa il -size parametro insieme ai criteri di dimensione. Puoi utilizzare i seguenti suffissi per specificare la dimensione del file:

  • b :blocchi da 512 byte (predefinito)
  • c :byte
  • w :parole a due byte
  • k :kilobyte
  • M :Megabyte
  • G :Gigabyte

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

find /tmp -type f -size 1024c

Il find Il comando consente inoltre di cercare file maggiori o minori di una dimensione specificata.

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

find . -type f -size -1M

Se vuoi cercare file con una dimensione maggiore di 1MB , quindi devi utilizzare il segno più + simbolo:

find . -type f -size +1M

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

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

Trova file per data di modifica #

Il find comando può anche cercare i file in base alla loro ultima modifica, accesso o ora di modifica.

Come per la ricerca per dimensione, utilizza 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 sotto /etc/dovecot/conf.d directory che termina con .conf ed è stato modificato negli ultimi cinque giorni:

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

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

find /home -mtime +30 -daystart

Trova file in base alle autorizzazioni #

Il -perm l'opzione ti consente di cercare i file in base ai permessi dei file.

Ad esempio, per trovare tutti i file con autorizzazioni di esattamente 775 all'interno del /var/www/html directory, useresti:

find /var/www/html -perm 644

Puoi anteporre alla modalità numerica meno - o barra / .

Quando barra / viene utilizzato come prefisso, quindi almeno una categoria (utente, gruppo o altro) deve avere almeno i rispettivi bit impostati affinché un file corrisponda.

Considera il seguente comando di esempio:

find . -perm /444

Il comando precedente corrisponderà a tutti i file con i permessi di lettura impostati per utente, gruppo o altri.

Se meno - viene utilizzato come prefisso, quindi affinché il file corrisponda, devono essere impostati almeno i bit specificati. Il comando seguente cercherà i file che hanno l'autorizzazione di lettura e scrittura per il proprietario e il gruppo e sono leggibili da altri utenti:

find . -perm -664

Trova file per proprietario #

Per trovare i file di proprietà di un particolare utente o gruppo, usa -user e -group opzioni.

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

find / -user linuxize

Ecco un esempio del mondo reale. Supponiamo che tu voglia trovare tutti i file di proprietà dell'utente www-data e cambia 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 il -delete opzione 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 usare -delete opzione.

Ad esempio, per eliminare tutti i file che terminano con .temp dal /var/log/ , useresti:

find /var/log/ -name `*.temp` -delete
Usa il -delete opzione con estrema cautela. Il find il comando viene valutato come un'espressione e se aggiungi il -delete prima opzione, il comando eliminerà tutto ciò che si trova al di sotto dei punti di partenza specificati.

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

Conclusione #

Ti abbiamo mostrato come utilizzare il find comando con varie opzioni e criteri.

Questo articolo dovrebbe darti una comprensione fondamentale di come individuare i file sui tuoi sistemi Linux. Puoi anche visitare il find pagina man e leggi tutte le altre potenti opzioni di find comando.

Se hai domande o commenti, lascia un commento qui sotto.


Linux
  1. Trova file e directory su Linux con il comando find

  2. Trova file e directory in Linux come un professionista

  3. Come eliminare file e directory in Linux dalla riga di comando

  4. Copia file e directory in Linux

  5. Trova i file e le directory più grandi in Linux

Come comprimere file e directory in Linux

Come spostare file e directory in Linux (comando mv)

Comando Rm in Linux

3 modi per trovare file e directory in Linux

Trova facilmente file e directory su Linux

4 modi per trasferire file e directory su Linux