¿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?

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 

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

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.


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 

-1

No probado, pero ¿qué tal algo como:

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

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.


... 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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.