Tengo un directorio con aproximadamente 100000 archivos, y quiero realizar alguna función en todos los archivos que comienzan con una cadena especificada, que puede coincidir con decenas de miles de archivos.
Yo he tratado
ls mystring*
pero esto vuelve con el error bash 'Demasiados argumentos'. Mi siguiente plan era usar
find ./mystring* -type f
Pero esto tiene el mismo problema.
El código debe parecerse a algo como
for FILE in `find ./mystring* -type f`
do
#Some function on the file
done

forbucle, debe tuberíafindenwhile.Respuestas:
utilizar
fuente
find . -iname 'mystring*'para la búsqueda sin distinción entre mayúsculas y minúsculas.-maxdepth 1antes-namede limitar la búsqueda a la carpeta actualle dará todos los archivos que comienzan (que es lo que el OP requirió específicamente) con la subcadena
abc.Funciona solo en el directorio actual, mientras que
findopera recursivamente en subcarpetas.Para usar
findsolo con archivos que comiencen con su cadena, intentefuente
Si desea restringir su búsqueda solo a archivos que debería considerar usar
-type fen su búsquedaintente usar también
-inamepara búsquedas que no distinguen entre mayúsculas y minúsculasEjemplo:
También podría realizar algunas operaciones en los resultados sin signo de tubería o xargs
Ejemplo:
Busque archivos y muestre su tamaño en MB
fuente