Bash脚本循环通过字母表
我想将所有以'x'开始的文件都mv
到目录'x'; 就像是:
mv path1/x*.ext path2/x
并为所有的字母表a,…,z做
我怎样才能写一个bash脚本,使string循环“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
这里是如何使用嵌套括号扩展来生成西class牙字母表
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个字符西class牙字母表
echo -e {{a..c},ch,{d..l},ll,{m,n},ñ,{o..z}}"\n" | nl
类似的可以做法语字母或德语字母。
使用rename
:
mkdir -p path2/{a..z} rename 's|path1/([az])(.*)|path2/$1/$1$2' path1/{a..z}*
如果你想剥离文件名前面的[az]字符,更新后的perlexpr将是:
rename 's|path1/([az])(.*)|path2/$1/$2' path1/{a..z}*