回答:
あなたはこれを行うことができます rename
コマンドラインユーティリティ。やりたいことをするためには、単純な正規表現が必要です。
rename "s/.+_/ds/g"
files
.+
(これに関連して)最後の下線までのすべてを表します。 _
)文字(つまり、最初の例で述べたように、これは複数のアンダースコアで機能します)。これには、アンダースコアの前に少なくとも1文字あることが必要です。次のようなファイル名があるとします。 _20131012.zip
、 つかいます .*
代わりに。つまり、この3文字の文字列( .+_
または .*_
)までのすべてに一致します そして含む ファイル名の最後の下線 s/ 古い / 新しい /
手段 の 新しい文字列を代入します( ds
)古い文字列を表します。の g
手段 g この場合、必要ないかもしれません。
g
これは私からの標準的な習慣であり、私はそれがこの場合必要ではないことに同意します。
find . -name "*.zip*" -exec rename "s/.+_/ds/g" {} \;
"{} \;" findが返すファイル名の変数です。
^
はじめにまた、OPはアンダースコアを残したかったのです。のg
末尾のオプションは、ここでは実際には必要ありません。可能であれば、ファイル名の複数のインスタンスと一致します。そのため、このコマンドのほうがパフォーマンスがよいと思います。rename "s/^.+_/ds_/" files