¿Cómo contar el número total de líneas de archivos encontrados?

10

Estoy ejecutando a find . -name patternpara encontrar algunos archivos, y me gustaría obtener con elegancia el número total de líneas en estos archivos.

¿Cómo puedo lograr eso?

GJ
fuente

Respuestas:

9

Si su versión wcy findadmite las opciones necesarias:

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

que le dará recuentos por archivo, así como un total. Si solo quieres el total:

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

Otra opción para versiones de findeso lo admite:

find . -name pattern -exec cat {} + | wc -l 
Dennis Williamson
fuente
2
$ find . -name '*.txt' -exec cat '{}' \; | wc -l

Toma cada archivo y lo catenvía, luego canaliza todo eso en el wcmodo de conteo de líneas.

O, [no probado] nombre de archivo extraño seguro:

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

Lamentablemente, la salida de:

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

inserta líneas adicionales. Para obtener un recuento de línea confiable, debe hacer:

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

De esta manera, maneja los espacios correctamente, obtiene un recuento de líneas para cada archivo y el recuento total de líneas, más rápido y con estilo.

g24l
fuente
1
Por ejemplo: tiempo encontrar. -name " .m" -exec cat '{}' \; El | wc -l se ejecuta en 4.878s y devuelve 227847 como recuento de líneas. Pero el tiempo encuentra. -name " .m" -print0 | xargs -0 wc -l se ejecuta en 0.769s y devuelve el recuento de línea correcto 126464.
g24l
1

Otra forma fácil de encontrar no. líneas en un archivo:

wc -l filename

Ejemplo:

wc -l myfile.txt 
VKGS
fuente
-1

No probado, pero ¿qué tal algo como:

cat `find . -name "searchterm" -print` | wc -l
Michael Schubert
fuente
Esto no funcionará bien con rutas que contienen espacios o caracteres que desencadenan el bloqueo.
Kamil Maciorowski
-2
wc -l `find -name filename`

Trabajará eficientemente.

Mahesh U
fuente
... o no, si las rutas contienen espacios o caracteres que desencadenan el bloqueo.
Kamil Maciorowski
E incluso si funciona, esto informa el número de líneas en cada archivo, que no es una forma elegante de obtener el total (según lo solicitado).
Scott