Linux which, whereis, locate: 3 comandi per trovare la posizione (percorso) di un file

Informativa sull'affiliazione v3.1
Informativa sull'affiliazione v3.2 (solo mobile)
Ambiente di testFamiglia RHELAlmaLinux 9.8account rootVerificato il 07/10/2026
Comandi di ricercawhichwhereislocate

A volte devi modificare httpd.conf ma non sai dove sia il file, oppure un comando con lo stesso nome esiste in due posti e non è chiaro quale venga eseguito. Il comando which di Linux trova il file che viene davvero eseguito, il comando whereis trova l'eseguibile più le cartelle di configurazione e i manuali, e il comando locate trova ogni percorso che contiene il nome. Questo articolo confronta i tre in una tabella e ti fa provarli su un server virtuale nel browser.

Su AlmaLinux 9.8 which è nel pacchetto which 2.21 e whereis in util-linux 2.37.4, quindi funzionano subito, mentre locate richiede di installare a parte il pacchetto mlocate 0.26.

✅ which vs whereis vs locate

I tre comandi cercano in posti diversi. which e whereis frugano sul momento cartelle fisse, mentre locate cerca i nomi in un elenco di file (DB) creato in anticipo.

ComandoCosa trovaDove cercaFile nuovi
whichL'unico file di comando che viene eseguito, più gli aliasCartelle elencate nel PATHTrovati subito
whereisEseguibile · cartelle di configurazione · manualiCartelle fisse come /usr/bin · /etc · /usr/share/manTrovati subito
locateOgni file e cartella che contiene il nomeUn DB creato in anticipo (/var/lib/mlocate/mlocate.db)Trovati dopo updatedb

Cerca lo stesso httpd con which e whereis e la differenza salta subito all'occhio.

~]# which httpd
/usr/sbin/httpd
~]# whereis httpd
httpd: /usr/sbin/httpd /usr/lib64/httpd /etc/httpd /usr/share/httpd /usr/share/man/man8/httpd.8.gz

locate mostra ogni percorso che corrisponde anche solo in parte al nome, quindi digitando [locate httpd.conf] escono anche il manuale (httpd.conf.5.gz) ed eventuali copie di backup, non solo il file di configurazione.

Sul server virtuale qui sotto scegli which, whereis o locate a sinistra per cambiare i chip; facendo clic su un chip si digita quel comando. Puoi anche scriverlo con la tastiera.

Simulatore dei comandi per trovare i fileAlmaLinux 9.8
[root@server work]#
Funziona solo nel tuo browser e non tocca un server reale. Scegli un comando a sinistra per cambiare i chip qui sotto; facendo clic su un chip si digita quel comando. Cerca lo stesso httpd con tutti e tre i comandi e confronta i risultati, e con locate crea un nuovo file e cerca prima e dopo updatedb. Se qualcosa si ingarbuglia, premi [Start over]; digita uknew help per vedere i comandi disponibili.

Per trovare file per dimensione o data di modifica invece che per nome, usa il comando find; per vedere il percorso della cartella in cui sei, usa il comando pwd.

✅ Comando which di Linux

which cerca nelle cartelle del PATH dalla prima in poi, una alla volta, e mostra il primo eseguibile che trova. È il file che viene davvero eseguito quando digiti il comando.

Su AlmaLinux bash passa a which l'elenco degli alias, quindi per un comando con alias ottieni sia l'alias sia il file reale. Se non è da nessuna parte nel PATH, compare [no command in (PATH)].

~]# which ll
alias ll='ls -l --color=auto'
	/usr/bin/ls
~]# which htop
/usr/bin/which: no htop in (/root/.local/bin:/root/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin)

In pratica l'unica opzione è -a. Quando lo stesso nome esiste in due cartelle del PATH li mostra entrambi, e quello in cima è quello eseguito davvero.

~]# which ping
/usr/sbin/ping
~]# which -a ping
/usr/sbin/ping
/usr/bin/ping

Su AlmaLinux 9.8 /usr/sbin/ping è un link che punta a /usr/bin/ping, quindi il risultato è lo stesso. Un programma installato da te in /usr/local/bin viene eseguito prima di quello in /usr/bin per l'ordine del PATH.

[which cd] mostra /usr/bin/cd, ma quando digiti cd nella shell viene eseguito il comando interno della shell e non questo file. Controlla se un comando è interno con [type cd], che stampa [cd is a shell builtin].

✅ Comando whereis di Linux

whereis usa il nome del comando per trovare insieme l'eseguibile e i manuali. Ignora il PATH e cerca in cartelle fisse come /usr/bin · /usr/sbin · /usr/lib64 · /etc · /usr/share, quindi compare perfino una cartella di configurazione con lo stesso nome (/etc/httpd).

OpzioneDescrizione
-bSolo binari. Per httpd: /usr/sbin/httpd e /usr/lib64/httpd · /etc/httpd · /usr/share/httpd
-mSolo manuali (/usr/share/man · /usr/share/info)
-sSolo sorgenti. In un'installazione predefinita di AlmaLinux 9.8 compare solo il nome, come [httpd:]
-lElenco delle cartelle in cui cerca whereis
~]# whereis -b httpd
httpd: /usr/sbin/httpd /usr/lib64/httpd /etc/httpd /usr/share/httpd
~]# whereis -m httpd
httpd: /usr/share/man/man8/httpd.8.gz
~]# whereis passwd
passwd: /usr/bin/passwd /etc/passwd /usr/share/man/man1/passwd.1ossl.gz /usr/share/man/man1/passwd.1.gz

Se non trova niente compare solo il nome, come [htop:]. which restituisce codice di uscita 1 quando non trova nulla, whereis invece 0, quindi in uno script usa which per controllare se qualcosa è installato.

✅ Comando locate di Linux

locate non cerca sul disco; cerca i nomi in un DB creato in anticipo. Per questo è veloce, ma non trova i file creati dopo la creazione del DB.

~]# dnf -y install mlocate
~]# updatedb

Se lo esegui subito dopo l'installazione non c'è ancora il DB e compare [locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory]; eseguendo updatedb una volta viene creato. Da lì in poi mlocate-updatedb.timer ricostruisce il DB una volta al giorno.

Un file nuovo compare solo dopo updatedb, e uno cancellato continua a comparire fino ad allora. Per vedere solo i file che esistono adesso, aggiungi -e.

~]# touch report.txt
~]# locate report.txt
~]# updatedb
~]# locate report.txt
/root/work/report.txt
~]# rm -f report.txt
~]# locate report.txt
/root/work/report.txt
~]# locate -e report.txt

PRUNEPATHS in /etc/updatedb.conf include /tmp · /var/tmp · /mnt · /media, quindi i file in queste cartelle non compaiono nemmeno dopo updatedb.

🔲 Opzioni del comando locate

OpzioneDescrizione
-iIgnorare maiuscole e minuscole
-cSolo il numero di corrispondenze invece dei percorsi
-l= -nAggiungi un numero per limitare i risultati a quel numero. -l 3
-bConfrontare solo il nome del file alla fine del percorso
-eEscludere i file presenti nel DB ma che non esistono più
-SInformazioni sul DB (cartelle · file · dimensione)
-rCercare con un'espressione regolare. locate -r "httpd.conf$"

ℹ️ Informativa sull'affiliazione
I contenuti di questo sito includono link di affiliazione. Se un visitatore acquista un prodotto o un servizio tramite uno di questi link, il sito riceve una commissione dal venditore. In questo processo l'importo pagato dall'acquirente (durante le promozioni l'importo scende↓) non aumenta. Prezzi, sconti e disponibilità indicati si riferiscono al momento della stesura e possono differire da quelli reali: prima di acquistare verifica sempre presso il venditore. I prodotti vengono scelti e valutati secondo criteri propri, e le commissioni non influiscono sull'ordine di presentazione né sul contenuto delle valutazioni.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Dimostra di essere umano: 0   +   8   =