Comando para imprimir la cantidad de archivos *.pdf en un directorio elegido

Comando para imprimir la cantidad de archivos *.pdf en un directorio elegido

Actualmente no estoy en una máquina Linux. ¿El siguiente comando produciría el resultado deseado?

ls | grep ".pdf" | wc

Respuesta1

No, ".pdf" macthes demasiado, por ejemplo, foo.pdfay bpdf.

Además, incluso si no tiene archivos que coincidan incorrectamente, wcsin opciones genera el número de líneas, palabras y bytes en la entrada, por lo que obtendría dos números más de los que le interesan. Si lo desea grepen la mezcla, podría funcionar ls | grep -E "\.pdf$" | wc -l, pero a menos que tenga muchos archivos pdf en ese directorio, grep no es necesario, puede arreglárselas con ls *.pdf | wc -l.

Añadido más tarde, cuando pude pensar en esto:

Además, greppuede hacer el conteo, por lo que si grepestá en la mezcla, simplemente agregue la -copción grep en lugar de canalizar la salida a wc -l, ls | grep -cE "\.pdf$"o si desea evitar contar directorios llamados <something.pdf>: ls -l | grep -cE "^-.*\.pdf$".

Respuesta2

Deberías usar

ls | grep ".pdf" | wc -l

El -lparámetro contará solo el número de líneas resultantes, mientras que sin él -ltambién obtendrá otros recuentos, como el recuento de nuevas líneas, palabras y bytes. Tenga en cuenta que esto contará los nombres de archivos (y también las carpetas) que contengan la cadena de caracteres ".pdf".

Para contar solo los archivos que terminan en .pdf, será mejor que utilices find:

find . -type f -name "*.pdf" | wc -l

Respuesta3

Su shell debería poder hacer el filtrado:

ls *.pdf | wc -l

o debes asegurarte de coincidir con el final de los nombres de archivos:

ls | grep "*\.pdf$" | wc -l

(observe el signo del dólar).

Nota: ambos también coincidirándirectoriosterminando en ".pdf", si lo hubiera.

Nota 2: lsdebería comportarse como si le hubiera dado la opción -1tan pronto como canalice su salida. De lo contrario, agregue este modificador.

información relacionada