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
for
bucle, debe tuberíafind
enwhile
.Respuestas:
utilizar
fuente
find . -iname 'mystring*'
para la búsqueda sin distinción entre mayúsculas y minúsculas.-maxdepth 1
antes-name
de 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
find
opera recursivamente en subcarpetas.Para usar
find
solo con archivos que comiencen con su cadena, intentefuente
Si desea restringir su búsqueda solo a archivos que debería considerar usar
-type f
en su búsquedaintente usar también
-iname
para 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