¿Encuentra todos los archivos con un nombre de archivo que comienza con una cadena especificada?

148

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
RikSaunderson
fuente
En lugar de un forbucle, debe tubería finden while.
Pausado hasta nuevo aviso.

Respuestas:

277

utilizar

find . -name 'mystring*'
Sergio Tulentsev
fuente
10
y para ejecutar alguna función "find. -name 'mystring *' -exec [comando]" por ejemplo eliminar "find. -name 'mystring *' -exec rm {} \;"
Eldar
2
Donde {} es un marcador de posición para el nombre del archivo :-) (para que pueda construir sus propias acciones)
Sergio Tulentsev
1
Esto parece devolver todos los resultados que contienen la cadena? El
Brian Z
77
... o find . -iname 'mystring*'para la búsqueda sin distinción entre mayúsculas y minúsculas.
Frank Nocke
OP se refiere a un solo directorio, así que inserte -maxdepth 1antes -namede limitar la búsqueda a la carpeta actual
jacanterbury
27
ls | grep "^abc"  

le 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, intente

encontrar . -nombre 'abc' *

jacanterbury
fuente
4

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

intente usar también -inamepara búsquedas que no distinguen entre mayúsculas y minúsculas

Ejemplo:

find /path -iname 'yourstring*' -type f

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

find /path -iname 'yourstring*' -type f -exec du -sm {} \;
matson kepson
fuente