在Bash中循环使用字母

beh*_*uri 75 bash loops for-loop

我希望mv所有以'x'开头的文件到目录'x'; 就像是:

mv path1/x*.ext path2/x
Run Code Online (Sandbox Code Playgroud)

并为所有字母a,...,z执行此操作

如何编写一个bash脚本,使'x'循环通过字母表?

Kam*_*zic 123

for x in {a..z}
do
    echo "$x"
    mkdir -p path2/${x}
    mv path1/${x}*.ext path2/${x}
done
Run Code Online (Sandbox Code Playgroud)


Mat*_*Mat 36

这应该让你开始:

for letter in {a..z} ; do
  echo $letter
done
Run Code Online (Sandbox Code Playgroud)


Lui*_*ñoz 17

这里是如何使用嵌套大括号扩展生成西班牙语字母表

for l in {{a..n},ñ,{o..z}}; do echo $l ; done | nl
1  a
 ...
14  n
15  ñ
16  o
...
27  z
Run Code Online (Sandbox Code Playgroud)

或者干脆

echo -e {{a..n},ñ,{o..z}}"\n" | nl
Run Code Online (Sandbox Code Playgroud)

如果要生成过时的 29个字符的西班牙语字母

echo -e {{a..c},ch,{d..l},ll,{m,n},ñ,{o..z}}"\n" | nl
Run Code Online (Sandbox Code Playgroud)

类似的可以用法语字母或德语字母表.


Tha*_*ung 5

也用大写

for letter in {{a..z},{A..Z}}; do
  echo $letter
done
Run Code Online (Sandbox Code Playgroud)


Alp*_*ons 5

这个问题和答案部分帮助了我解决我的问题。
我需要在 bash 中放大字母表的一部分

虽然扩展是严格的文本

我找到了一个解决方案:并使其变得更加简单:

START=A
STOP=D
for letter in $(eval echo {$START..$STOP}); do
    echo $letter
done
Run Code Online (Sandbox Code Playgroud)

结果是:

A
B
C
D
Run Code Online (Sandbox Code Playgroud)

希望它对寻找我必须解决的相同问题的人有所帮助,并且也最终在这里