GNU/Linux >> Linux Esercitazione >  >> Linux

Conteggio di tutte le occorrenze di una stringa all'interno di tutti i file in una cartella

Sei vicino. Per ottenere un conteggio totale di tutte le occorrenze di "ha" all'interno di tutti i file .txt in una cartella:

grep -o "ha" *.txt | wc -l

Da man grep :

-o, --only-matching
       Print only the matched (non-empty) parts of a matching line, with
       each such part on a separate output line.

Funziona perché ciascuno match viene stampato su una riga separata, consentendo così wc -l contarli tutti.

Per impostazione predefinita, tuttavia, grep trova solo la prima occorrenza su una riga e restituisce l'intera riga. Allo stesso modo, opzione -c trova solo la prima occorrenza in tutte le righe, quindi mostra quante righe hanno avuto 1 (o più) corrispondenze.

MODIFICA:

Ecco un modo per stampare il numero totale di occorrenze all'interno di ogni singolo file (con i nomi dei file):

find *.txt -printf 'echo "$(grep -o "ha" %p | wc -l) %p";' | sh

#Example output
3 file1.txt
1 file2.txt

Spiegazione:

find *.txt - trova i file .txt

-printf - stampa tutto tra le virgolette singole (formattate) sullo standard output, sostituendo le occorrenze di %p con l'output di find (nomi file)

$(grep -o "ha" %p | wc -l) - funziona come sopra

| sh - l'output da -printf (che sono comandi) vengono reindirizzati a una shell ed eseguiti

Nota che printf viene invocato una volta per nome file.


Invece di usare grep , prova a usare ag -c ha SilverSearcher:

1.txt:3
2.txt:1

È più veloce! Se stai usando Ubuntu, puoi installare il pacchetto silversearcher-ag .


Linux
  1. Come rimuovere tutti i file in una cartella tranne un file specifico in Linux

  2. Rimuovere tutti i file/directory tranne un file?

  3. Stampa tutti i file in una cartella?

  4. sed principiante:modifica di tutte le occorrenze in una cartella

  5. collegamento simbolico:trova tutti i file che si collegano a questo file

Come trovare una stringa o una parola specifica in file e directory

Come eseguire la ricerca Grep su tutti i file e in tutte le directory

Come eseguire il grep di una stringa in una directory e in tutte le sue sottodirectory?

Come trovo tutti i file contenenti testo specifico su Linux?

Trova directory con tutti i file all'interno più vecchi di X?

Ricerca di una stringa in un numero di file in LInux