2011-09-04 13 views
53

Voglio mv tutti i file che iniziano con 'x' nella directory 'x'; qualcosa di simile:Looping in alfabeti in Bash

mv path1/x*.ext path2/x 

e farlo per tutte le lettere dell'alfabeto A, ..., z

Come posso scrivere uno script bash che fa 'x' loop attraverso l'alfabeto?

risposta

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

Questo dovrebbe iniziare:

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

ecco come generare l'alfabeto spagnolo, utilizzando espansione delle parentesi graffe nidificato

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

O semplicemente

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

Se si desidera per generare lo obsolete 29 caratteri alfabeto spagnolo

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

Simile potrebbe essere fatto per l'alfabeto francese o alfabeto tedesco.

2

Utilizzando rename:

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

Se si vuole mettere a nudo-off il principale [a-z] personaggio nome del file, le perlexpr aggiornati sarebbero:

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