Come cercare file e cartelle su Linux
Quando si amministra una VPS può essere necessario individuare rapidamente un file o una cartella all’interno del sistema. Questo capita frequentemente quando si devono modificare configurazioni, trovare log, verificare file caricati sul server o individuare dati che occupano spazio.
Linux mette a disposizione diversi strumenti per effettuare queste ricerche. In questa guida vedremo come cercare file e cartelle per nome, individuare file in base alle loro caratteristiche e cercare una determinata parola all’interno dei file.
Cercare un file o una cartella per nome
Il comando più versatile per effettuare ricerche nel filesystem è find.
Per cercare un file specificando il nome:
find / -name "nome-file"
La ricerca parte dalla directory / e può quindi richiedere del tempo, soprattutto su filesystem di grandi dimensioni.
Se non hai bisogno di cercare nell’intero sistema, è preferibile specificare una directory più precisa. Ad esempio:
find /var/www -name "config.php"
In questo modo la ricerca verrà effettuata solamente all’interno di /var/www.
Se vuoi ignorare la differenza tra maiuscole e minuscole puoi utilizzare -iname:
find /var/www -iname "config.php"
Cercare file in base all'estensione
find permette anche di cercare tutti i file con una determinata estensione.
Ad esempio, per trovare tutti i file PHP all’interno di /var/www:
find /var/www -type f -name "*.php"
L’opzione -type f limita la ricerca ai soli file.
Per cercare invece tutte le directory che hanno un determinato nome:
find /var/www -type d -name "backup"
In questo caso -type d limita la ricerca alle directory.
Cercare file in base alla dimensione o alla data
Può essere utile cercare i file non solo per nome, ma anche in base alle loro caratteristiche.
Ad esempio, per trovare tutti i file più grandi di 100 MB:
find / -type f -size +100M
Questa ricerca è particolarmente utile quando il disco della VPS è quasi pieno e si vuole individuare rapidamente quali file occupano più spazio.
È inoltre possibile cercare file modificati recentemente.
Per trovare i file modificati nelle ultime 24 ore:
find /var/www -type f -mtime -1
Per trovare invece i file modificati più di 7 giorni fa:
find /var/www -type f -mtime +7
Cercare una parola all'interno dei file
Quando conosci il contenuto che stai cercando ma non sai in quale file si trovi, puoi utilizzare grep.
Ad esempio, per cercare la parola carlo all’interno dei file di configurazione di Nginx:
grep -R "carlo" /etc/nginx
L’opzione -R permette di effettuare la ricerca anche nelle sottodirectory.
Puoi utilizzare lo stesso metodo per cercare errori, indirizzi IP, nomi di dominio o altre informazioni all’interno dei file.
Per ignorare la differenza tra maiuscole e minuscole puoi aggiungere -i:
grep -Ri "errore" /var/log
Visualizzare solo i file che contengono una determinata parola
Se ti interessa sapere quali file contengono una determinata stringa, senza visualizzare tutte le righe corrispondenti, puoi utilizzare l’opzione -l:
grep -Ril "errore" /var/log
Questo è particolarmente comodo quando devi individuare rapidamente quali file di log contengono un determinato messaggio.
Visualizzare solo i file che contengono una determinata parola
Per ricerche semplici basate esclusivamente sul nome del file puoi utilizzare anche locate.
Ad esempio:
locate config.php
A differenza di find, locate utilizza un database dei file presenti nel sistema e può quindi restituire i risultati molto più rapidamente.
Il database potrebbe però non essere aggiornato in tempo reale. Per questo motivo un file creato o spostato recentemente potrebbe non comparire immediatamente nei risultati.