GNU/Linux >> Linux Esercitazione >  >> Linux

Usa Trova e trova per cercare file in Linux

Questo articolo introdurrà due strumenti utili per cercare i file all'interno del filesystem Linux. Il primo è il find comando, che può essere trovato in qualsiasi distribuzione Linux, e il secondo è locate , che necessita di un'installazione.

Trova comando

Il comando find fa parte di Linux per impostazione predefinita. Offre più parametri per perfezionare la tua ricerca.

Trova per nome

Il comando di ricerca più semplice è cercare per nome in cui ti trovi:

$ find -name "FILE_NAME"

È possibile specificare la directory in cui si desidera cercare il file:

$ find /home -name my_file.txt
$ find / -name my_other_file.txt

Tieni presente che questo comando fa distinzione tra maiuscole e minuscole. Se vuoi ignorare il caso usa:

$ find -iname "FILE_NAME"

Nel caso in cui desideri cercare file che non aderiscono allo schema specificato puoi negare i parametri di ricerca utilizzando il -not parametro o \! . Ad esempio:

$ find -not -name "FILE_NAME_TO_AVOID"

or

$ find \! -name "FILE_NAME_TO_AVOID"

Trova per tipo di file

Il file Il comando consente anche di cercare i tipi di file. Alcuni comuni descrittori del tipo di file sono:

  • f :file normale
  • d :directory
  • l :collegamento simbolo
  • c :dispositivi a caratteri
  • b :blocca i dispositivi

Il tipo di file desiderato va dopo il -type attributo.

Ad esempio, per trovare tutti i file JSON sotto etc directory:

$ find /etc -type f -name "*.json"

Trova per dimensione del file

C'è anche un parametro usato per filtrare il risultato della ricerca in base alla dimensione dei file:-size .

Per le unità dimensionali è possibile utilizzare i seguenti suffissi:

  • c :byte
  • k :kilobyte
  • M :megabyte
  • G :gigabyte
  • b :blocchi da 512 byte

E per specificare se stai parlando di una dimensione esatta, minore o maggiore di utilizza i seguenti prefissi:

  • Ricerca esatta :nessun prefisso
  • Meno di :- prefisso
  • Maggiore di :+ prefisso

Ad esempio, per trovare tutti i file da 3 gigabyte nella home directory:

$ find /home -size 3G

Per tutti i file inferiori a 3 gigabyte:

$ find /home -size -3G

File oltre 3 gigabyte:

$ find /home -size +3G

Cerca per ora

Puoi anche cercare i file in base all'ultimo accesso, modifica o orario di modifica.

  • Tempo di accesso :-atime per l'ultima volta il file è stato letto.
  • Tempo di modifica :-mtime per l'ultima volta il contenuto del file è stato modificato.
  • Cambia ora :-ctime per l'ultima volta in cui sono stati modificati i metadati dell'inode del file.

È anche possibile confrontare con un file di riferimento per restituire quelli più recenti:

$ find / -newer file_name

Per i tempi, i parametri specificati sono in giorni . È possibile utilizzare gli stessi prefissi della ricerca per dimensione:

$ find /home -mtime 3
$ find /home -atime -2
$ find /home -ctime +5

Per trovare i file usando il tempo in minuti puoi usare:

$ find /home -mmin 3

Trova per proprietario e autorizzazioni

Ci sono anche parametri per trovare i file in base ai loro proprietari (-user e -group ) e le loro autorizzazioni (-perm ):

$ find /home -user my_user
$ find /home -group my_group
$ find /home -perm 777

Definizione della profondità di ricerca

Durante la ricerca in una directory, find il comando restituirà tutti i file in quella directory, anche se si trovano all'interno di altre sottodirectory. Per controllare questa profondità puoi definire una profondità massima, una profondità minima o entrambe.

Ad esempio, per cercare solo nella directory superiore e in un livello di sottodirectory è possibile impostare il -maxdepth parametro a 2:

$ find -maxdepth 2 -name my_file

Per definire la profondità minima dove find dovrebbe cercare si usa il -mindepth parametro:

$ find -mindepth 5 -name my_file

Questi parametri possono essere combinati:

$ find -mindepth 4 -maxdepth 7 -name my_file

Esecuzione di comandi sui risultati

Come visto nei comandi di profondità, tutti find i parametri possono essere combinati per ottenere risultati molto specifici. Quando ottieni i risultati desiderati, è possibile eseguire comandi su di essi utilizzando -exec parametro.

Quando si combinano i parametri di ricerca è anche possibile utilizzare il -and e -or opzioni per personalizzare i criteri di ricerca. Quando nessuno di essi viene utilizzato, -and l'opzione è l'impostazione predefinita.

Ad esempio, per modificare i permessi di tutti i file in /my_dir directory che attualmente hanno 777 autorizzazioni su 664 utilizzano quanto segue:

$ cd /my_dir
$ find . -type f -perm 777 -exec chmod 664 {} \;

Strumento di localizzazione

Il locate comando è un'alternativa a find . La differenza è che utilizza un database dei file nel filesystem in modo che possa funzionare più velocemente. Per installare il locate strumento che puoi utilizzare:

  • Per le distribuzioni Ubuntu/Debian:
$ sudo apt install mlocate`
  • Per le distribuzioni CentOS/RHEL:
$ sudo yum install mlocate`

Locate utilizza un processo cron per aggiornare il database quotidianamente, ma può essere aggiornato manualmente utilizzando:

$ sudo updatedb

Per cercare il “nome di base”, ovvero se la query è contenuta solo nel nome del file e non nel percorso del file, utilizzare il -b bandiera:

$ locate -b name

Per trovare i file che esistono ancora (dopo l'ultimo updatedb call) usa il -and bandiera:

$ locate -e name

Per le statistiche dal database generato utilizzare:

$ locate -S

Conclusione

La ricerca di file nella riga di comando di Linux potrebbe essere difficile. Gli strumenti presentati in questo articolo forniscono un modo semplice per gestire e trovare i file. Comprendendo i diversi parametri, la ricerca può essere specifica quanto si desidera.

Utilizza la scheda Feedback per inserire commenti o porre domande. Puoi anche avviare una conversazione con noi.


Linux
  1. Trova file e directory in Linux come un professionista

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

  3. Trova un file con i comandi Trova e individua in Linux

  4. Come cercare i file usando regex nello script della shell linux

  5. linux:cerca i file di tipo *.php recentemente modificati

Come utilizzare sed per trovare e sostituire la stringa nei file

Come cercare file dalla riga di comando di Linux

Come installare e utilizzare il comando locate in Linux

Come installare e utilizzare Okteta per file di dati RAW in Linux

Linux cerca la stringa nelle cartelle e nei file con ack

Trova facilmente file e directory su Linux