Foo_Jan_2013.pdf
、、、Bar_Feb_2012.pdf
のような名前の PDF ファイルが約 1000 個ありFoo_Mar_2013.pdf
ますBar_Mar_2013.pdf
。Foo_01_2013.pdf
これらのファイルの名前を、月名を、Bar_02_2012.pdf
、Foo_03_2013.pdf
、などの数字に置き換えたいと考えていますBar_03_2013.pdf
。
私が試した 1 つのアプローチは、2 つの配列 (1 つは一致パターン用、もう 1 つは置換パターン用) を定義し、次のように検索置換でそれぞれの配列メンバーを使用することです。
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};
上記で試みたように、配列メンバーをパターンとして使用することは可能ですか? もしそうなら、正しい構文は何ですか? そうでない場合、この問題を解決するために他にどのようなオプションが必要ですか?