1 11/04/2026 9 min

Quando serve davvero cercare file su CentOS 8

Su CentOS 8 la ricerca dei file non è solo una questione di comodità. In troubleshooting, backup, pulizia disco e verifica di configurazioni duplicate, saper trovare subito il file giusto evita ore buttate a navigare a mano tra directory profonde. Il punto non è memorizzare un comando, ma capire quale strumento usare in base al tipo di ricerca: nome esatto, pattern, data di modifica, dimensione, proprietà, permessi o contenuto.

La scelta pratica è quasi sempre questa: find quando ti serve controllo preciso e risultati affidabili in tempo reale; locate quando vuoi una ricerca veloce su un indice già costruito; grep quando non cerchi il file, ma una stringa dentro i file. Su sistemi con molti mount, container, home directory pesanti o filesystem remoti, questa distinzione fa la differenza tra una risposta immediata e una ricerca rumorosa o incompleta.

find: lo strumento giusto quando vuoi precisione

find legge il filesystem in tempo reale. Non dipende da un database aggiornato, quindi è il comando più affidabile quando devi capire cosa esiste davvero adesso. È anche quello che conviene usare quando stai verificando un incidente: se un file è stato creato, spostato o cancellato poco fa, find vede lo stato corrente, non una fotografia vecchia.

La forma base è semplice:

find /percorso -name "nomefile"

Se vuoi cercare un file chiamato esattamente backup.sql dentro la tua home, puoi fare così:

find ~ -name "backup.sql"

Il vantaggio di find è che si può affinare molto. Per esempio, se non ricordi il nome completo ma sai che contiene una parola, usa i wildcard:

find /var/www -name "*config*"

Su CentOS 8 il filesystem e i permessi contano parecchio. Se cerchi sotto /root o in directory protette, potresti vedere errori di accesso. In quel caso la ricerca non è sbagliata, è incompleta per mancanza di privilegi. Un controllo rapido è eseguire il comando con sudo e confrontare l’output:

sudo find / -name "php.ini" 2>/dev/null

Il redirect di stderr serve solo a nascondere i messaggi di permesso negato; non risolve il problema, ma pulisce l’output quando sai già che alcune aree del sistema sono off-limits. Se invece stai indagando una anomalia di sicurezza, non sopprimere gli errori: ti servono proprio quelli.

Filtrare per tipo, dimensione e tempo di modifica

La ricerca vera, in amministrazione di sistema, raramente è “trova un file con questo nome”. Più spesso è: trova gli eseguibili modificati ieri, i file sopra una certa dimensione o le configurazioni cambiate dopo un deploy. Qui find diventa più utile di un semplice elenco di directory.

Per trovare solo i file regolari:

find /etc -type f -name "*.conf"

Per trovare directory con un nome specifico:

find /var -type d -name "nginx"

Per scovare file grandi, utile quando il disco si sta saturando:

find / -type f -size +500M

Per trovare file modificati nelle ultime 24 ore:

find /var/log -type f -mtime -1

Se ti interessa una finestra più precisa, puoi usare -mmin per i minuti. È molto utile quando stai seguendo un evento appena successo e non vuoi aspettare un giorno intero per capire cosa è cambiato.

Un trucco spesso sottovalutato è combinare i filtri. Per esempio, trovare file di log più grandi di 100 MB e modificati di recente:

find /var/log -type f -size +100M -mtime -2

Questo tipo di ricerca aiuta a individuare rotazioni fallite, processi verbosi o applicazioni che stanno scrivendo troppo. Non è un’analisi completa, ma è un buon primo taglio.

Trova e agisci: eseguire un comando sui risultati

Quando hai trovato il file, spesso non basta sapere dov’è. Vuoi anche ispezionarlo, copiarlo o cancellarlo con prudenza. La combinazione più utile è find con -exec, perché applica un’azione solo ai risultati trovati.

Per leggere i primi dettagli di tutti i file trovati:

find /var/www -name "*.php" -exec ls -l {} \;

Per cercare e poi verificare il contenuto con grep:

find /etc -type f -name "*.conf" -exec grep -n "Listen" {} \;

In ambienti grandi è meglio essere prudenti con i comandi che modificano o eliminano file. Prima fai un giro di sola lettura con -print o con l’output standard, poi aggiungi l’azione solo quando sei sicuro. È una regola banale, ma evita disastri quando il pattern è più largo del previsto.

Se vuoi un’esecuzione più efficiente su tanti file, puoi usare + al posto di ; in -exec per raggruppare i parametri. È un dettaglio utile quando il numero di risultati è alto e il comando esterno è costoso.

locate: veloce, ma dipende dall’indice

locate è la scorciatoia quando vuoi una risposta rapida. Non scansiona il filesystem al momento della ricerca, ma interroga un database indicizzato. Questo lo rende molto più veloce di find su alberi enormi, ma introduce un compromesso: i risultati sono validi solo se l’indice è aggiornato.

La ricerca base è immediata:

locate php.ini

Se il risultato sembra strano o mancano file appena creati, il problema non è il comando ma il database. Su CentOS 8 l’indice viene aggiornato tramite updatedb, di solito con un job schedulato. Puoi forzare un aggiornamento se hai i privilegi adeguati:

sudo updatedb

Subito dopo, ripeti la ricerca. Se il file compare solo dopo l’aggiornamento, hai già trovato la causa: indice vecchio. Se non compare ancora, allora il file non è dove pensavi oppure è escluso dalla scansione. Il punto è che locate non sostituisce la verifica sul filesystem reale; la accelera soltanto.

Per questo motivo io lo uso così: prima una ricerca rapida con locate, poi conferma con find sul percorso emerso. È un buon equilibrio tra velocità e affidabilità.

Cercare nel contenuto: grep, find e casi pratici

Capita spesso di non sapere il nome del file, ma di ricordare una stringa dentro il file. In quel caso la ricerca diventa un problema di contenuto, non di percorso. Qui entra in gioco grep, da usare da solo o insieme a find.

Per cercare una stringa in un singolo file:

grep -n "server_name" /etc/nginx/nginx.conf

Per cercarla in tutti i file di configurazione sotto /etc:

find /etc -type f -name "*.conf" -exec grep -n "server_name" {} \;

Quando cerchi su molti file, conviene aggiungere informazioni utili come il nome del file e il numero di riga. In un contesto operativo, sapere solo che la stringa esiste non basta: devi poter aprire subito il punto giusto e correggerlo.

Se vuoi distinguere tra maiuscole e minuscole, o fare una ricerca ricorsiva dentro directory, grep -R è comodo. Però attenzione: può produrre molto rumore, soprattutto in directory con log, cache o file binari. In quei casi conviene restringere il campo con find prima e passare a grep solo sui file sensati.

Permessi, mount e altri motivi per cui “non trova nulla”

Quando una ricerca non restituisce quello che ti aspetti, il problema non è sempre il pattern. Su CentOS 8 i casi classici sono tre: permessi insufficienti, filesystem montato altrove, oppure file esclusi da un indice o da un percorso che non stai realmente interrogando.

Se il file esiste ma non compare, verifica prima il mount point:

df -h
mount | grep -E "/var|/home|/mnt"

Un file potrebbe trovarsi su un disco esterno, un volume LVM o un NFS montato in una directory diversa da quella che stai scandendo. In quel caso la ricerca è corretta, ma incompleta perché stai guardando il posto sbagliato.

Per i permessi, un check rapido è capire con quale utente stai cercando. Se lavori come utente normale ma il file è sotto directory root-only, find o grep potrebbero non vedere tutto. Usa sudo quando ha senso, ma solo per la verifica necessaria, non come soluzione automatica a ogni problema.

Un altro caso pratico: file eliminato ma processo ancora aperto. Qui la ricerca per nome non basta, perché il file può essere già stato rimosso dal filesystem ma ancora tenuto aperto da un servizio. In quel caso la verifica passa da find a strumenti come lsof o al controllo dei descriptor aperti. Non è la prima cosa da fare, ma è un classico quando il disco non scende dopo una cancellazione apparente.

Ricerca rapida in casi operativi reali

In pratica, la maggior parte dei casi d’uso si riduce a pochi scenari ricorrenti. Se devi trovare il file di configurazione di un servizio, parti dal nome del pacchetto o dal path tipico e usa find. Se devi capire dove è stato scritto un file appena creato, usa find con -mtime o -mmin. Se devi localizzare un file noto su un sistema grande e l’indice è affidabile, locate ti fa risparmiare tempo.

Un esempio concreto: dopo un cambio su un server web, vuoi verificare quali file di configurazione sono stati toccati nelle ultime due ore sotto /etc/httpd:

find /etc/httpd -type f -mmin -120

Se invece stai cercando tutte le copie di un certificato o di una chiave in ambienti legacy, fai attenzione: il nome può essere comune e il contenuto può essere identico in più posti. In quel caso è utile partire dal nome del file, poi verificare hash o dimensione per capire se stai guardando duplicati reali o file diversi con stesso nome.

Una mini-strategia che funziona quasi sempre

Se vuoi un approccio semplice e ripetibile, usa questa sequenza mentale: prima cerca il percorso con locate se hai fretta, poi conferma con find se il risultato conta davvero, infine usa grep per controllare il contenuto. In questo modo separi velocità, affidabilità e analisi testuale, senza confondere i tre livelli.

La regola pratica è questa: locate risponde veloce ma può essere vecchio, find è lento ma dice la verità del filesystem, grep trova il testo ma non ti dice automaticamente dove sia la struttura che stai cercando. Saperli alternare bene è più importante che conoscere dieci varianti sintattiche.

Se lavori spesso su CentOS 8, vale la pena costruirti un piccolo set di alias o appunti operativi per i casi che ripeti di frequente. Non per automatizzare tutto, ma per evitare di riscrivere ogni volta lo stesso comando e ridurre gli errori di battitura nei momenti in cui stai già inseguendo un problema.