括弧内に接頭辞コードを含むファイルがたくさんあります。次のように、これらのプレフィックスをサフィックスに変換したいと思います。
Finance-(4BF)-001.doc --> Finance-001-4BF.doc
Corporate-(K04)-001.doc --> Corporate-001-K04.doc
以前、Windows マシンでこれを行うための非常に単純な VBScript を作成しましたが、今は Linux でこれを行う必要があります。面倒な検索の後、正規表現をファイル名に適用し、正規表現の一致を使用して名前を変更するシンプルでエレガントな方法を見つけることができません。
これまでのところ、私はこれを持っています:
#!/bin/bash
for i in *.doc
do
x=${i//[\(\)]/}
echo "$i renames to: $x"
done
これの出力は次のとおりです。
Corporate-(K04)-001.doc renames to: Corporate-K04-001.doc
Finance-(4BF)-001.doc renames to: Finance-4BF-001.doc
上記の正規表現は、ファイル名から角かっこ () を削除しているだけだと思いますが、それらの内容を一致させ (例: \((\w)\)
)、その一致を名前変更コマンドで使用する方法 (例: ) が必ずあるはず$1
です。
また、Linux初心者なので、何x=${...}
をしているのかわかりません。名前がわからないので、Googleで検索することもできません。文字列に正規表現を適用していると思いますi
が、その場合$1
、$2
などから一致を抽出できないのはなぜですか?
ありがとう!