【发布时间】:2011-11-10 03:12:45
【问题描述】:
我想mv所有以'x'开头的文件到目录'x';类似:
mv path1/x*.ext path2/x
对所有字母 a, ..., z 都这样做
如何编写一个 bash 脚本,让 'x' 在字母表中循环?
【问题讨论】:
我想mv所有以'x'开头的文件到目录'x';类似:
mv path1/x*.ext path2/x
对所有字母 a, ..., z 都这样做
如何编写一个 bash 脚本,让 'x' 在字母表中循环?
【问题讨论】:
这应该让你开始:
for letter in {a..z} ; do
echo $letter
done
【讨论】:
for x in {a..z}
do
echo "$x"
mkdir -p path2/${x}
mv path1/${x}*.ext path2/${x}
done
【讨论】:
"$x" 就足够了,而且是让它脱颖而出的更好方法。
"$xyz",解释器会认为您正在尝试打印一个名为 xyz 的变量,而 "${x}yz" 会让解释器确切知道您要做什么
"$x"yz。
这是使用嵌套大括号扩展生成西班牙字母表的方法
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
如果要生成obsolete 29 个字符的西班牙字母表
echo -e {{a..c},ch,{d..l},ll,{m,n},ñ,{o..z}}"\n" | nl
法文字母或德文字母也可以这样做。
【讨论】:
for j in $(for i in $(echo {a..z} ñ ch ll ); do echo $i; done| sort | xargs); do echo "Hello-$j"; done
使用rename:
mkdir -p path2/{a..z}
rename 's|path1/([a-z])(.*)|path2/$1/$1$2' path1/{a..z}*
如果您想从文件名中去除前导 [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 中放大字母表的一部分。
I found a solution: 并让它变得更加简单:
START=A
STOP=D
for letter in $(eval echo {$START..$STOP}); do
echo $letter
done
结果:
A
B
C
D
希望它对寻找我必须解决的相同问题的人有所帮助, 也在这里结束
【讨论】:
我希望这会有所帮助。
对于 {a..z} 中的 i
因为我在 {A..Z}
对于我在 {{a..z},{A..Z}}
根据需要使用循环。
【讨论】: