Come Trovare una Parola Specifica in un File su Linux

Per impostazione predefinita, la maggior parte degli strumenti di ricerca guarda ai nomi dei file, non ai contenuti dei file. Tuttavia, il programma di ricerca GNU più famoso, grep, guarderà all’interno dei file con i flag corretti. Qui ti mostriamo come puoi trovare parole specifiche in un file su Linux.
Indice
- Utilizzare grep per Trovare una Parola Specifica in un File
- Utilizzare find per Trovare una Parola Specifica in un File
- Utilizzare ack per Trovare una Parola Specifica in un File
- Vuoi una GUI? Usa Catfish
- Domande Frequenti
Leggi anche: Come Trovare File di Grandi Dimensioni in Linux
Utilizzare grep per Trovare una Parola Specifica in un File
Per impostazione predefinita, grep cerca nei contenuti dei file oltre che nei loro nomi. È incluso nella maggior parte dei sistemi Linux ed è generalmente identico tra le distribuzioni. I programmatori che esaminano i contenuti dei file dei loro progetti potrebbero preferire eseguire un comando diverso, come ack.
A seconda di come il file è codificato, grep potrebbe non essere sempre in grado di guardare all’interno. Ma per la maggior parte dei formati basati su testo, grep può scansionare il testo del file per il pattern specificato.
grep -rw '/path/to/search/' -e 'pattern'- Il flag
-rimposta grep in modalità ricorsiva, navigando attraverso tutte le directory contenute nella directory specificata. - Il flag
-wcerca corrispondenze di parole complete. Questo significa che “rosso” corrisponderà solo alla parola “rosso” piuttosto che a qualsiasi stringa di lettere che lo contenga, come “ rosso undante” o “ti rosso.” Questo avviene cercando solo “rosso” circondato da quelli che sono noti come caratteri costituenti non-parola (cioè, qualsiasi cosa che non sia una lettera, un numero o un tratto basso). - Il flag
-eprecede il pattern da cercare. Supporta le espressioni regolari per impostazione predefinita.
Per velocizzare grep, puoi utilizzare i flag --exclude e --include per limitare la ricerca a determinati tipi di file. Ad esempio, --exclude='*.csv' non cercherà all’interno di file con l’estensione .csv. --include='*.txt', d’altra parte, cercherà solo all’interno di file con l’estensione .txt. Il flag può essere aggiunto immediatamente dopo il comando grep come mostrato di seguito:
grep --exclude='*.csv' -Rw '/path/to/search' -e 'pattern'Puoi anche escludere directory specificate seguendo il formato sottostante:
grep --exclude-dir='{dir1,dir2,*_old}' -Rw '/path/to/search' -e 'pattern'Questo comando non cercherà in nessuna directory della directory di lavoro attuale chiamata dir1, dir2, o che corrisponde al pattern *_old, eliminandole dal processo di ricerca. Eseguirà la ricerca specificata ricorsiva, corrispondenza di parole complete su tutti gli altri file nella directory di lavoro attuale.
Flag Interessanti che Puoi Usare con grep
Ora che sei stato adeguatamente presentato a grep e a come funziona, ecco alcuni flag utili che puoi allegare al tuo comando:
-i– Fa sì che grep effettui una ricerca senza distinzione tra maiuscole e minuscole. Ad esempio, cercare “Kraken” restituirà un risultato quando grep troverà corrispondenze per “kraken” o “kRaken”.-n– Mostra i numeri di linea accanto alle corrispondenze. Questo è particolarmente utile per i programmatori o le persone che esaminano grandi file di configurazione.-R– Come con-r, grep effettuerà una ricerca ricorsiva in tutte le sottocartelle, ma questo flag specifico seguirà i link simbolici (scorciatoie).-s– Sopprime i messaggi di errore. Se stai ricevendo molti errori distrattivi riguardo file che non esistono, che non possono essere letti o che hanno permessi inappropriati, passa questo flag affinché grep possa concentrarsi sul mostrarti le corrispondenze che trova.
Leggi anche: Come Trovare un File in Linux Utilizzando il Comando Find
Utilizzare find per Trovare una Parola Specifica in un File
Sebbene la sintassi del comando find sia più complicata di quella di grep, alcuni preferiscono utilizzarla.
find . -name "*.php" -exec grep "pattern" {} ;Questo comando utilizzerà il flag -exec di find per passare i file trovati a grep per la ricerca. Con un’astuta disposizione della sintassi, puoi utilizzare la ricerca nel file system più veloce di find per localizzare i tipi di file specifici nei quali desideri cercare, quindi passarli a grep per cercare all’interno dei file.
Nota che find guarda solo ai nomi dei file, non ai contenuti. Ecco perché grep è necessario per cercare il testo e i contenuti dei file. I normali flag di grep dovrebbero essere completamente operativi all’interno del flag -exec.
Utilizzare ack per Trovare una Parola Specifica in un File
Il comando ack è probabilmente lo strumento di ricerca più veloce, ma non è popolare come grep. Il comando sottostante cercherà all’interno della directory corrente.
ack 'pattern'Se desideri cercare all’interno di un file o directory specifici, puoi aggiungere quel file o percorso completamente qualificato alla tua ricerca.
ack 'pattern' /path/to/file.txtLeggi anche: Come Installare e Gestire le Versioni di Python in Linux
Vuoi una GUI? Usa Catfish
Se sei allergico ai terminali, tutte le popolari distribuzioni Linux offrono Catfish, un’applicazione GUI versatile che ti consente di cercare file e i loro contenuti per una stringa specifica. Non è avanzato come i comandi discussi qui, ma fornisce un servizio prezioso a chi preferirebbe un’interfaccia grafica.

Per cercare nei contenuti dei file una parola specifica, fai clic sul menu nell’angolo in alto a destra di Catfish e fai clic su “Cerca contenuti dei file.”
Dopo averlo impostato, digita ciò che desideri cercare nella barra superiore e premi Invio. Questo è tutto!
Leggi anche: Le Differenze tra Su, Sudo Su, Sudo -s e Sudo -i
Domande Frequenti
Come posso interrompere una ricerca con grep prima che sia completata?
Per fermare qualsiasi processo in corso nel tuo terminale, premi semplicemente Ctrl + C sulla tua tastiera. Questo invia un segnale per terminare il processo in esecuzione. È anche per questo che non puoi utilizzare le normali scorciatoie di copia/incolla da un emulatore di terminale.
Ci sono gestori di file che cercano nei contenuti dei file?
Se utilizzi l’ambiente desktop KDE Plasma, il suo gestore di file predefinito (Dolphin) ha già questa capacità. Quando fai clic sul pulsante di ricerca per cercare file, c’è un’opzione per scegliere tra nomi di file e contenuto dei file sotto la barra di ricerca.
Basta fare clic su “Contenuto” se vuoi cercare parole all’interno dei file. Non sarà avanzato come utilizzare grep, ma fa il suo lavoro.
Ci sono altri usi per grep?
Grep non serve solo per cercare nel tuo file system! È interessante notare che puoi utilizzarlo attraverso quasi qualsiasi comando per cercare attraverso il suo output invece di dover trovare manualmente qualcosa da solo.
Grep può essere utilizzato per filtrare l’output dei comandi per mostrarti cose che sono più rilevanti per te. Sperimenta abbastanza con esso e alla fine padroneggerai l’arte di diagnosticare e conoscere il tuo computer!
Tutti gli screenshot di Miguel Leiva-Gomez.