在Bash中循环浏览字母


82

我要将mv所有以'x'开头的文件都保存到目录'x'中;就像是:

mv path1/x*.ext path2/x

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

我如何编写一个bash脚本来使字母中的“ x”循环?

Answers:



39

这应该使您开始:

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

20

这是使用嵌套括号扩展生成西班牙语字母的方法

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

法国字母或德国字母也可以做类似的事情。


3

使用rename

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

如果要从文件名中删除前导[az]字符,则更新的perlexpr将为:

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


1

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

尽管扩展严格是文本性的

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

START=A
STOP=D
for letter in $(eval echo {$START..$STOP}); do
    echo $letter
done

结果是:

A
B
C
D

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.