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.pdfa
y bpdf
.
Además, incluso si no tiene archivos que coincidan incorrectamente, wc
sin 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 grep
en 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, grep
puede hacer el conteo, por lo que si grep
está en la mezcla, simplemente agregue la -c
opció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 -l
parámetro contará solo el número de líneas resultantes, mientras que sin él -l
tambié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: ls
debería comportarse como si le hubiera dado la opción -1
tan pronto como canalice su salida. De lo contrario, agregue este modificador.