contando un archivo específico en el directorio

contando un archivo específico en el directorio

Supongamos que necesito contar todos los archivos del directorio que terminan en o. (por ejemplo ab12.14o, 70010340.09o). ¿Qué comando necesito usar?

Lo intenté ls *.o | wcpero no funciona.

Respuesta1

Probablemente solo necesite eliminar .de su expresión global, lo que hace que solo coincida con archivos que terminan en .oen lugar deo

Sin embargo, una mejor manera sería utilizar find:

find . -maxdepth 1 -name '*o' -printf 'x' | wc -c

Puede agregar -type fpara limitarlo a archivos simples (excluir directorios) y eliminarlos -maxdepth 1si desea contar de forma recursiva.

Respuesta2

No lo uses ls.

Utilice una matriz de shell para almacenar el nombre de los archivos que terminan en o:

files=( *o )

Ahora haz:

echo "${#files[@]}"

para obtener el número de archivos.

@steeldriver ha dejado claro que si no tiene nombres de archivos coincidentes, el patrón global se tomará literalmente. Debido a esto, aunque no haya nombres de archivos coincidentes, el recuento de archivos seguirá siendo 1.

Para superar esto, configure la opción nullglobo failglobshell:

shopt -s nullglob
shopt -s failglob

información relacionada