1

*%3A *%3A*.xmlのようなファイルの名前を:: *。xml に変更しようとしています。

MODFILE=`echo $1 | tr -s '"%3A"' ':'`
mv $1 "${MODFILE}" 

%3Aが直接連続して2回以上ない限り、ジョブは実行されますか。私はたくさん検索し、最初のオカレンスだけの名前を変更するスクリプト、またはオカレンスが1つしかない場合にのみ機能するスクリプトをいくつか見つけました。

たとえば、これは1回の発生でのみ機能します。

for files in *%3A*.xml
do
  mv "$files" "${files/%3A/:}"
done 

誰かがこれを手伝ってくれませんか?私はシェルスクリプティングにそれほど慣れていません:/

4

2 に答える 2

3

以下を使用すれば、ほぼ完了です。

mv "$files" "${files//%3A/:}"

(1 つではなく 2 つのスラッシュ)、すべてのオカレンスが置き換えられます。

于 2012-07-27T08:57:13.063 に答える
1

最も簡単なのは、名前の変更を使用することです

 rename %3A : *

最初の発生だけで済む場合もありますが、その後は再度実行する必要があります。

Rename は正規表現を入力として受け入れることもできますが、それはシステムによって異なります。

于 2012-07-27T09:02:26.990 に答える