繁体   English   中英

在 Bash 中循环字母

[英]Looping through alphabets in Bash

我想将所有以“x”开头的文件mv到目录“x”; 就像是:

mv path1/x*.ext path2/x

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

我怎样才能编写一个 bash 脚本来让 'x' 在字母表中循环?

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

这应该让你开始:

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

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

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

对法语字母或德语字母也可以进行类似的操作。

也有大写

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

使用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}*

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

虽然扩展是严格的文本

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

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

结果是:

A
B
C
D

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

循环使用字母表我希望这会有所帮助。

因为我在 {a..z}

因为我在 {A..Z}

对于 i 在 {{a..z},{A..Z}}

根据需要使用循环。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM