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