Come contare il numero totale di righe dei file trovati?


10

Sto correndo un find . -name patternper trovare alcuni file e vorrei ottenere elegantemente il numero totale di righe in questi file.

Come posso raggiungerlo?

Risposte:


9

Se la tua versione wce findsupporta le opzioni necessarie:

find . -name pattern -print0 | wc -l --files0-from=-

che ti darà conteggi per file e un totale. Se vuoi solo il totale:

find . -name pattern -print0 | wc -l --files0-from=- | tail -n 1

Un'altra opzione per le versioni findche lo supportano:

find . -name pattern -exec cat {} + | wc -l 

2
$ find . -name '*.txt' -exec cat '{}' \; | wc -l

Prende ogni file e catlo inserisce, quindi reindirizza tutto attraverso la wcmodalità di conteggio delle righe.

Oppure, [non testato] nome file strano sicuro:

$ find . -name '*.txt' -print0 | xargs -0 cat | wc -l

1

Purtroppo l'output di:

find . -iname "yourpattern" -exec cat '{}' \; |wc -l

inserisce righe extra. Per ottenere un conteggio delle linee affidabile, è necessario:

find . -name "yourpattern" -print0 | xargs -0 wc -l

In questo modo gestisci correttamente gli spazi, ottieni un conteggio delle righe per ogni file e il conteggio totale delle righe, più veloce e con stile !!!


1
es: time find. -name " .m" -exec cat '{}' \; | wc -l viene eseguito in 4.878s e restituisce 227847 come conteggio righe. Ma il tempo trova. -name " .m" -print0 | xargs -0 wc -l viene eseguito in 0,769s e restituisce il conteggio di riga corretto 126464.
g24l

1

Un altro modo semplice per trovare no. righe in un file:

wc -l filename

Esempio:

wc -l myfile.txt 

-1

Non testato, ma che ne dici di qualcosa del tipo:

cat `find . -name "searchterm" -print` | wc -l

Ciò non funzionerà bene con percorsi contenenti spazi o caratteri che attivano il globbing.
Kamil Maciorowski il

-2
wc -l `find -name filename`

funzionerà in modo efficiente.


... oppure no, se i percorsi contengono spazi o caratteri che attivano il globbing.
Kamil Maciorowski il

E anche se funziona, questo riporta il numero di righe in ciascun file, il che non è un modo elegante per ottenere il totale (come richiesto).
Scott,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.