web-dev-qa-db-ja.com

Bashでアルファベットをループする

「x」で始まるすべてのファイルをディレクトリ「x」にmvしたい。何かのようなもの:

mv path1/x*.ext path2/x

そして、すべてのアルファベット文字a、...、zに対してそれを行います

アルファベットを「x」ループにするbashスクリプトを作成するにはどうすればよいですか?

74
behzad.nouri
for x in {a..z}
do
    echo "$x"
    mkdir -p path2/${x}
    mv path1/${x}*.ext path2/${x}
done
121
Kamil Dziedzic

これで開始できます。

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

ネストされたブレース展開を使用してスペイン語のアルファベットを生成する方法は次のとおりです

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

廃止 29文字のスペイン語のアルファベットを生成する場合

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

フランス語のアルファベットまたはドイツのアルファベットについても同様のことができます。

17
Luis Muñoz

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}*
3
anishsane

大文字も同様に

for letter in {{a..z},{A..Z}}; do
  echo $letter
done
2
Thanh Trung