回答:
あなたはこれを行うことができます 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