¿Encontrar todos los archivos con un nombre de archivo que comience con una cadena específica?
Tengo un directorio con aproximadamente 100000 archivos y quiero realizar alguna función en todos los archivos que comienzan con una cadena específica, que puede coincidir con decenas de miles de archivos.
Yo he tratado
ls mystring*
pero esto regresa con el error de bash "Demasiados argumentos". Mi siguiente plan era utilizar
find ./mystring* -type f
pero esto tiene el mismo problema.
El código debe verse así
for FILE in `find ./mystring* -type f`
do
#Some function on the file
done
Usar find
con un comodín:
find . -name 'mystring*'
ls | grep "^abc"
le dará todos los archivos que comienzan (que es lo que el OP requería específicamente) con la subcadena abc
.
Opera sólo en el directorio actual mientras que find
opera de forma recursiva en subcarpetas.
Para usarlo find
solo con archivos que comiencen con su cadena, intente
encontrar . -nombre 'abc'*
Si desea restringir su búsqueda solo a archivos que debería considerar utilizar -type f
en su búsqueda
Intente utilizar también -iname
para búsquedas que no distingan entre mayúsculas y minúsculas.
Ejemplo:
find /path -iname 'yourstring*' -type f
También puedes realizar algunas operaciones en resultados sin signo de tubería o xargs.
Ejemplo:
Busca archivos y muestra su tamaño en MB
find /path -iname 'yourstring*' -type f -exec du -sm {} \;