2011-09-04 35 views
53

我想要mv所有以'x'開頭的文件到目錄'x';是這樣的:在Bash中循環顯示字母

mv path1/x*.ext path2/x 

,並做了所有字母A,...,Z

如何我寫bash腳本,這使得 'X' 在字母表循環?

回答

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

這應該讓你開始:

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

這裏是如何使用嵌套括號擴展

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

或者乾脆

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

如果你想生成西班牙語字母生成obsolete 29個字符西班牙字母

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

對於法語字母表或德語字母表可以進行類似操作。

2

使用rename

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

如果要剝離工作的領導[A-Z]從文件名字符,更新perlexpr是:

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