Trova file contenenti testo specifico in Linux
Linux, indipendentemente dalla distribuzione che utilizzi, viene fornito con una serie di strumenti GUI che consentono la ricerca di file. Molti gestori di file moderni supportano la ricerca di file direttamente nell'elenco dei file. Tuttavia, esistono diverse situazioni in cui è necessario utilizzare la console, ad esempio durante una sessione SSH o quando il server X non si avvia. Ecco come trovare rapidamente file contenenti testo specifico utilizzando il terminale.
Annuncio
Se puoi usare la GUI, la ricerca dei file non è un problema. Nel mio ambiente desktop XFCE preferito, il file manager Thunar consente la ricerca di file digitando il nome del file direttamente nell'elenco dei file.
Tuttavia, nessuno dei gestori di file che ho provato consente la ricerca dei contenuti dei file.
Per aggirare questa limitazione quando si lavora in una sessione GUI, è possibile utilizzare Flatfish. Сatfish è uno strumento di ricerca popolare. Consente la ricerca dei contenuti dei file. Devi fare clic sull'icona a forma di ingranaggio e abilitare l'opzione
Cerca nel contenuto del file.Tuttavia, quando si tratta del terminale, non è possibile utilizzare alcuno strumento grafico. Inoltre, trovo Catfish non utile e preferisco gli strumenti classici della console su di esso. Ecco i metodi e gli strumenti che utilizzo.
Per trovare file contenenti testo specifico in Linux, Fare quanto segue.
- Apri la tua app terminale preferita. Terminale XFCE4 è la mia preferenza personale.
- Digita il seguente comando:
find ./ -type f -exec grep -l "testo da trovare" {} \;
- Questo produrrà l'elenco dei file che contiene la porzione di testo richiesta.
Il comando find cercherà i file a partire dalla directory corrente, "./". È possibile specificare invece il percorso desiderato.
L'opzione -tipo f gli dice di cercare solo i file ed escludere le directory. Inoltre, puoi fare in modo che cerchi solo un determinato tipo di file aggiungendo l'opzione come segue:find ./ -type f -iname "*.txt" -exec grep -l "testo da trovare" {} \;
Guarda lo screenshot seguente:
Il -exec opzione chiama lo strumento grep per ciascuno dei file corrispondenti per verificarne il contenuto. Se il testo viene trovato nel file, il suo nome verrà aggiunto all'output, grazie al -l opzione.
alternative
Esistono alternative ai metodi sopra descritti. Prima di tutto, puoi usare solo il grep attrezzo. Prova il seguente comando:
grep -iRl "testo da trovare" ./
- -i sta per ignora caso di testo.
- -R sta per elaborazione ricorsiva di file.
- -l sta per "mostra il nome del file, non il risultato stesso".
Come puoi vedere, questo metodo è meno flessibile del trova comando.
Comandante di mezzanotte
Un altro metodo che uso spesso è Midnight Commander (mc), l'app di gestione dei file della console. A differenza di find o grep, mc non è incluso di default in tutte le distribuzioni Linux che ho provato. Potrebbe essere necessario installarlo da soli.
Per trovare file contenenti un testo specifico utilizzando Midnight Commander, avvia l'app e premi la seguente sequenza sulla tastiera:
Alt + Spostare + ?
Questo aprirà la finestra di ricerca.
Compila la sezione "Nome file:". Puoi specificare qualcosa come "*.txt" per cercare il tuo testo solo nei file di testo.
Ora compila il Contenuto: scatola. Digita il testo che contengono i file e premi il tasto Invio.
Troverà tutti i file che corrispondono ai criteri.
Questo è tutto.