Una delle operazioni più comuni quando si lavora su Linux è la ricerca di file e directory. Sui sistemi Linux sono disponibili diversi comandi che consentono di cercare file, trova e trova sono i più utilizzati.
Il locate
command è il modo più rapido e semplice per cercare file e directory in base ai loro nomi.
In questo articolo spiegheremo come utilizzare locate
comando.
Installazione di locate
(localizza comando non trovato) #
A seconda della distribuzione e del modo in cui è stato eseguito il provisioning del sistema, il pacchetto locate potrebbe essere preinstallato o meno sul tuo sistema Linux.
Per verificare se il locate
l'utilità è installata, apri il tuo terminale, digita locate
e premi Enter
. Se il pacchetto è installato, il sistema visualizzerà locate: no pattern to search for specified
. Altrimenti, vedrai qualcosa come locate command not found
.
Se locate
non è installato, puoi installarlo facilmente usando il gestore di pacchetti della tua distribuzione.
Installa locate
su Ubuntu e Debian #
sudo apt update
sudo apt install mlocate
Installa locate
su CentOS e Fedora #
sudo yum install mlocate
Come locate
Lavoro #
Il locate
Il comando ricerca un dato modello attraverso un file di database generato da updatedb
comando. I risultati trovati vengono visualizzati sullo schermo, uno per riga.
Durante l'installazione del pacchetto mlocate, viene creato un cron job che esegue updatedb
comando ogni 24 ore. Ciò garantisce che il database sia aggiornato regolarmente. Per ulteriori informazioni sul lavoro cron, controlla /etc/cron.daily/mlocate
file.
Il database può essere aggiornato manualmente eseguendo updatedb
come root o utente con privilegi sudo:
sudo updatedb
Il processo di aggiornamento richiederà del tempo, a seconda del numero di file e directory e della velocità del tuo sistema.
I file creati dopo l'aggiornamento del database non verranno visualizzati nei risultati di individuazione.
Rispetto al più potente locate
comando che cerca nel file system, locate
funziona molto più velocemente ma manca di molte funzioni e può cercare solo in base al nome del file.
Come utilizzare locate
Comando #
La sintassi per locate
il comando è il seguente:
locate [OPTION] PATTERN...
Nella sua forma più semplice, se usato senza alcuna opzione, il locate
il comando stamperà il percorso assoluto di tutti i file e le directory che corrispondono al modello di ricerca e per i quali l'utente ha il permesso di lettura.
Ad esempio per cercare un file chiamato .bashrc
dovresti digitare:
locate .bashrc
L'output includerà i nomi di tutti i file contenenti la stringa .bashrc
a loro nome:
/etc/bash.bashrc
/etc/skel/.bashrc
/home/linuxize/.bashrc
/usr/share/base-files/dot.bashrc
/usr/share/doc/adduser/examples/adduser.local.conf.examples/bash.bashrc
/usr/share/doc/adduser/examples/adduser.local.conf.examples/skel/dot.bashrc
Il /root/.bashrc
il file non verrà mostrato perché abbiamo eseguito il comando come un utente normale che non ha i permessi di accesso a /root
directory.
Se l'elenco dei risultati è lungo, per una migliore leggibilità, puoi reindirizzare l'output a less
comando:
locate .bashrc | less
Il locate
il comando accetta anche modelli contenenti caratteri glob come il carattere jolly *
. Quando il pattern non contiene caratteri globbing, il comando cerca *PATTERN*
. Ecco perché nell'esempio precedente sono stati visualizzati tutti i file contenenti il modello di ricerca nei loro nomi.
Il carattere jolly è un simbolo utilizzato per rappresentare zero, uno o più caratteri. Ad esempio, per cercare tutti i .md
file sul sistema, digitare:
locate *.md
Per limitare i risultati della ricerca, usa il -n
opzione seguita dal numero di risultati che si desidera visualizzare. Il comando seguente cercherà tutti i .py
file e visualizzare solo 10 risultati:
locate -n 10 *.py
Per impostazione predefinita, locate
esegue ricerche con distinzione tra maiuscole e minuscole. Il -i
(--ignore-case
) l'opzione dice a locate
per ignorare il caso ed eseguire una ricerca senza distinzione tra maiuscole e minuscole.
locate -i readme.md
/home/linuxize/p1/readme.md
/home/linuxize/p2/README.md
/home/linuxize/p3/ReadMe.md
Per visualizzare il conteggio di tutte le voci corrispondenti, utilizzare il -c
(--count
) opzione. Il comando seguente restituirà il numero di tutti i file contenenti .bashrc
a loro nome:
locate -c .bashrc
6
Per impostazione predefinita, locate
non verifica se i file trovati esistono ancora nel file system. Se hai eliminato un file dopo l'ultimo aggiornamento del database e se il file corrisponde al modello di ricerca, verrà incluso nei risultati della ricerca.
Per visualizzare solo i nomi dei file esistenti al momento locate
è eseguito, utilizzare -e
(--existing
) opzione. Ad esempio, quanto segue restituirebbe solo il .json
esistente file:
locate -e *.json
Se hai bisogno di eseguire una ricerca più complessa, usa il -r
(--regexp
) opzione, che consente di eseguire la ricerca utilizzando un'espressione regolare di base anziché i modelli. Questa opzione può essere specificata più volte.
Ad esempio, per cercare tutti i .mp4
e .avi
file sul tuo sistema e ignora le maiuscole, eseguiresti:
locate --regex -i "(\.mp4|\.avi)"
Conclusione #
Il locate
Il comando ricerca nel file system i file e le directory il cui nome corrisponde a un determinato modello. La sintassi del comando è facile da ricordare e i risultati vengono mostrati quasi istantaneamente.
Per ulteriori informazioni su tutte le opzioni disponibili di locate
tipo di comando man locate
nel tuo terminale.
Se hai domande, sentiti libero di lasciare un commento.