16 abr 2013

Como contar el número de líneas de varios archivos

Supongamos que tenemos una montaña de archivos con datos y todos terminan con la extensión .dat. Para verificarnos que todos están igualmente formateados podemos, por ejemplo, contar el número de líneas para saber si todas son iguales. En linux un comando tan simple y sencillo como este, puede salvarnos de muchos apuros:

ls *.dat | xargs wc -l
para eso es necesario tener instalado el programita xargs (en debian: aptitude install xargs ). En el comando anterior:
  • ls *.dat nos arroja todos los archivos que terminan con la extensión .dat
  • Los resultados se pasan para el comando xargs por un tubo (en inglés pipe, y se escribe como una rayita vertical |)
  • xargs ejecuta, para cada archivo .dat, el siguiente comando wc -l que cuenta las líneas de un archivo.

En la pantalla tendrás algo como esto:

53 r2=1.900_resultados.dat
8 r2=1.950_resultados.dat
53 r2=2.000_resultados.dat
53 r2=2.100_resultados.dat
53 r2=2.050_resultados.dat
Ufa! vean la segunda línea, hemos encontrado un problema antes de que se nos presentara. Houston,no problemo!

Ahora supongan que la lista anterior no tiene 5 archivos, sino muchos más. Sería tortuoso buscar línea a línea, para ver cual de todos los archivos tiene más o menos que 53 líneas.<

Vamos a hilar más fino y hacer una modificación que nos arroje únicamente los nombres de los archivos que tengan una cantidad diferente de líneas:

ls *.dat | xargs wc -l | grep -v '53 r2'
En la última modificación, grep va a buscar todos los resultados anteriores que tengan 53 r2, la cadena de caracteres que identifica todos los archivos "buenos" (53 es el número de línea y r2 son los dos primeros caracteres de la ruta del archivo). Con la opción -v le decimos a grep, que invierta la búsqueda y nos muestre los casos que NO contienen la cadena anterior.

No hay comentarios.:

Mi camino recorrido