Cómo obtener “wc -l” para imprimir solo el número de líneas sin nombre de archivo?

wc -l file.txt 

muestra el número de líneas y el nombre del archivo.

Necesito solo el número en sí (no el nombre del archivo).

puedo hacer esto

  wc -l file.txt | awk '{print $1}' 

Pero tal vez hay una mejor manera?

Pruebe de esta manera:

 wc -l < file.txt 
 cat file.txt | wc -l 

De acuerdo con la página man (para la versión BSD, no tengo una versión GNU para verificar):

Si no se especifican archivos, se usa la entrada estándar y no se muestra ningún nombre de archivo. El aviso aceptará entrada hasta que reciba EOF, o [^ D] en la mayoría de los entornos.

Qué tal si

 wc -l file.txt | cut -d' ' -f1 

es decir, pipe la salida de wc en cut (donde los delimitadores son espacios y selecciona solo el primer campo)

Para hacer esto sin el espacio principal, ¿por qué no?

 wc -l < file.txt | bc 

Qué tal si

 grep -ch "^" file.txt 

Obviamente, hay muchas soluciones para esto. Aquí hay otro:

wc -l somefile | tr -d "[:alpha:][:blank:][:punct:]"

Esto solo muestra el número de líneas, pero el carácter de nueva línea ( \n ) está presente, si no lo desea, reemplace [:blank:] con [:space:] .

La mejor manera sería, antes que nada, encontrar todos los archivos en el directorio y luego utilizar AWK NR (Cantidad de registros variables)

a continuación está el comando:

 find  -type f | awk 'END{print NR}' 

ejemplo: – find /tmp/ -type f | awk 'END{print NR}' find /tmp/ -type f | awk 'END{print NR}'