Bash

2011-09-04 30 views
53

'da alfabelerle döngüden geçiyorum' x 'ile başlayan tüm dosyaları' x 'ile başlayan tüm dosyaları mv istiyorum; gibi bir şey:Bash

mv path1/x*.ext path2/x 

ve bir, ..., z

nasıl kılan bir bash komut dosyası yazabilirsiniz tüm alfabe harfleri yapmak 'x' alfabesi aracılığıyla döngüler?

cevap

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

Bu başlangıç ​​olmalıdır:

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

burada

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

Yoksa istiyorsanız basitçe

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

iç içe ayracı açılımı kullanılarak İspanyolca alfabe oluşturmak için nasıl'yi oluşturmak için29 karakter İspanyolca alfabe

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

Benzer fransızca alfabesi veya Almanca alfabesi için de yapılabilir. rename kullanma

2

: Eğer şerit kapalı yol açan [a-z] dosya adı karakteri istiyorsanız

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

, güncellenmiş perlexpr olacaktır:

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