2011-09-04 44 views
53

Quiero mv todos los archivos que comienzan con 'x' al directorio 'x'; algo así como:Looping a través de los alfabetos en Bash

mv path1/x*.ext path2/x 

y lo haga por todas las letras del alfabeto a, ..., z

¿Cómo puedo escribir un script bash que hace 'x' recorre el alfabeto?

Respuesta

86
for x in {a..z} 
do 
    echo "$x" 
    mkdir -p path2/${x} 
    mv path1/${x}*.ext path2/${x} 
done 
28

Esto debería empezar:

for letter in {a..z} ; do 
    echo $letter 
done 
11

aquí es cómo generar el alfabeto español mediante la expansión de llaves anidada

for l in {{a..n},ñ,{o..z}}; do echo $l ; done | nl 
1 a 
... 
14 n 
15 ñ 
16 o 
... 
27 z 

O simplemente

echo -e {{a..n},ñ,{o..z}}"\n" | nl 

Si desea para generar el obsolete 29 caracteres Alfabeto español

echo -e {{a..c},ch,{d..l},ll,{m,n},ñ,{o..z}}"\n" | nl 

Se podría hacer lo mismo para el alfabeto francés o el alfabeto alemán.

2

Usando rename:

mkdir -p path2/{a..z} 
rename 's|path1/([a-z])(.*)|path2/$1/$1$2' path1/{a..z}* 

Si desea despojar-off, en el [a-z] personaje de nombre de archivo, los perlexpr actualizados serían:

rename 's|path1/([a-z])(.*)|path2/$1/$2' path1/{a..z}* 
Cuestiones relacionadas