2010-10-27 11 views
64

Tengo un directorio con aproximadamente 100000 archivos y deseo realizar alguna función en todos los archivos que comiencen con una cadena especificada, que puede coincidir decenas de miles de archivos.Buscar todos los archivos con un nombre de archivo que comienza con una cadena especificada que puede coincidir con miles de archivos

He tratado

ls mystring* 

pero esto vuelve con el error Bash 'Demasiados argumentos. Mi próximo plan era utilizar

find ./mystring* -type f 

pero esto tiene el mismo problema.

El código debe ser algo como

for FILE in `find ./mystring* -type f` 
do 
    #Some function on the file 
done 

Gracias de antemano, Rik

+0

En lugar de un bucle 'for', debe conectar' find' en 'while'. –

Respuesta

126

uso

find . -name 'mystring*' 
+7

y para ejecutar alguna función "find. -name 'mystring *' -exec [command]" por ejemplo delete "find. -name 'mystring *' -exec rm {} \;" – Eldar

+2

Donde {} es un marcador de posición para el nombre de archivo :-) (para que pueda construir sus propias acciones) –

+1

Esto parece devolver todos los resultados * que contienen * la cadena? El –

17
ls | grep "^a" 

le dará todos los archivos que comienzan con la letra A y simplemente funciona en el directorio actual mientras que find se profundizará en sub-direct ories por defecto.

No digo que sea mejor, solo un ángulo diferente.

Cuestiones relacionadas