¿Encontrar todos los archivos con un nombre de archivo que comience con una cadena específica?

Resuelto RikSaunderson asked hace 14 años • 3 respuestas

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
RikSaunderson avatar Oct 27 '10 22:10 RikSaunderson
Aceptado

Usar findcon un comodín:

find . -name 'mystring*'
Sergio Tulentsev avatar Oct 27 '2010 15:10 Sergio Tulentsev
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 findopera de forma recursiva en subcarpetas.

Para usarlo findsolo con archivos que comiencen con su cadena, intente

encontrar . -nombre 'abc'*

jacanterbury avatar Jul 13 '2012 12:07 jacanterbury

Si desea restringir su búsqueda solo a archivos que debería considerar utilizar -type fen su búsqueda

Intente utilizar también -inamepara 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 {} \;
mati kepa avatar Aug 08 '2018 09:08 mati kepa