在Bash中循环遍历字母表
我想在Bash中循环遍历字母表,bash,loops,for-loop,Bash,Loops,For Loop,我想mv将以“x”开头的所有文件发送到目录“x”;比如: mv path1/x*.ext path2/x 对所有字母a,…,z都这样做 如何编写一个bash脚本,使字母表中出现“x”循环?这应该让您开始: 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 ñ 1
mv
将以“x”开头的所有文件发送到目录“x”;比如:
mv path1/x*.ext path2/x
对所有字母a,…,z都这样做
如何编写一个bash脚本,使字母表中出现“x”循环?这应该让您开始:
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
法语字母表或德语字母表也可以采用类似方法。使用:
如果要从文件名中去掉前导的[a-z]字符,则更新的perlexpr将是:
rename 's|path1/([a-z])(.*)|path2/$1/$2' path1/{a..z}*
也要大写
for letter in {{a..z},{A..Z}}; do
echo $letter
done
这个问题和答案在一定程度上帮助了我解决了问题。
我需要在bash中翻阅字母表的部分 虽然扩张 让事情变得更简单:
START=A
STOP=D
for letter in $(eval echo {$START..$STOP}); do
echo $letter
done
其结果是:
A
B
C
D
希望这对那些寻找我必须解决的问题的人有所帮助,
在这里也结束了我可以问一下为什么在第4行和第5行用大括号括起x吗?这里不需要它,但它很有效,使参数更突出;)通常,
“$x”
就足够了,这是一个更好的方法,可以让它脱颖而出。@WeijunZhou如果您想展开变量x,后面跟着字母“y”和“z”,这是个问题。如果您试图展开“$xyz”
,解释器会认为您试图打印一个名为xyz的变量,而“${x}yz”
会让解释器确切地知道您试图做什么。我的意思是“$x”yz
。避免拆分字母表的丑陋替代方法:表示j in$(表示i in$(echo{a..z}chll);do echo$i;done | sort | xargs);重复“你好-$j”;完成
START=A
STOP=D
for letter in $(eval echo {$START..$STOP}); do
echo $letter
done
A
B
C
D