Linux/Unix Shell Scripting - contar lineas archivos *.sh

 
Vista:

contar lineas archivos *.sh

Publicado por manuel (1 intervención) el 12/03/2007 14:22:35
Hola a todos, mi pregunta es como sacar por pantalla lo siguiente.
47 lineas en 2 archivos de shell
el 47 lo obtengo de cat `find -type f -name *.sh` | wc -l
el 2 lo obtengo de find -type f -name *.sh | wc -l
ahora bien el echo no me deja hacer esto
echo `cat `find -type f -name *.sh` | wc -l` " lineas en " `find -type f -name *.sh | wc -l` "...."
de q forma lo puedo lograr?
es necesario hacer un bucle for y almacenar en una variable para asi
"$variabledelFOR lineas en.......
ayuda plz
gracias
un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:contar lineas archivos *.sh

Publicado por Tom (336 intervenciones) el 12/03/2007 18:23:49
Sí, el wc es un poco pijotero, no tiene una opción para _no_ sacar el nombre de fichero, por eso
tu línea, si funcionara, no lo haría como tú quieres.

Y el problema si lo haces con un while es que éste se ejecuta en una sub-shell, con lo cual las variables que tocas dentro del while / done no se verán modificadas al acabar.

Con for es mejor, porque se ejecuta en la misma subshell.

FILES=0
LINES=0
for F in $(find . -type f -a -name "*.sh" )
do
FILES=$((FILES + 1))
PARCIAL=$(wc -l $F | cut -d" " -f1)
LINES=$((LINES + PARCIAL))
done
echo "$LINES en $FILES"
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:contar lineas archivos *.sh

Publicado por javier (1 intervención) el 01/09/2008 05:55:25
find -type f -name "*" -exec cat {} ; | wc -l
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:contar lineas archivos *.sh

Publicado por Amanda (1 intervención) el 28/04/2009 03:13:15
Hola a mi no me funcionó con la función cut, pero lo intenté con awk y me funcionó perfecto, esto por si a alguno tampoco le funcionó el cut:

PARCIAL=$(wc -l $F | awk '{print $1}')

Suerte,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar