我有大约一千个 PDF 文件,其名称如Foo_Jan_2013.pdf
, Bar_Feb_2012.pdf
, Foo_Mar_2013.pdf
, Bar_Mar_2013.pdf
. 我想重命名这些文件,用数字替换月份名称,例如Foo_01_2013.pdf
, Bar_02_2012.pdf
, Foo_03_2013.pdf
, Bar_03_2013.pdf
。
我尝试的一种方法是定义两个数组(一个用于匹配模式,另一个用于替换模式),然后在搜索替换中使用相应的数组成员,如下所示:
match=(Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec);
replace=(01 02 03 04 05 06 07 08 09 10 11 12);
for FILE in *.pdf;
do
for i in {0..11};
do
echo ${match[i]} ${replace[i]}; # Note, see below
echo ${FILE/${match[i]}/${replace[i]}};
done
done
标记为Note的行按预期打印Jan 01
,Feb 02
等,但在下一行中将它们用作搜索或替换模式无效,并按$FILE
原样打印。
我还确认了以下两项工作:
${FILE/Jan/01};
foo=Jan;
bar=01;
${FILE/$foo/$bar};
是否可以像我上面尝试的那样使用数组成员作为模式?如果是这样,正确的语法是什么?如果没有,我还有什么其他选择来解决这个问题?