トリックを実行するPerl rename
コマンドがあります。しかし、注意してください:と呼ばれるいくつかの異なるコマンドがrename
あるのでperlexpr
、引数としてaを期待するPerlスクリプトを持っていることを確認してください。これは、Debianおよび派生製品(Ubuntu、Mintなど)rename
のperl
パッケージによって提供されるコマンドですが、と呼ばれる別のユーティリティを備えた他のディストリビューションでは提供されませんrename
。
martin@martin ~/test % touch a.txt
martin@martin ~/test % touch b.txt
martin@martin ~/test % rename 's/^(prefix)?/prefix/' *.txt
martin@martin ~/test % ll
insgesamt 0
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixa.txt
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixb.txt
martin@martin ~/test % rename 's/^(prefix)?/prefix/' *.txt
martin@martin ~/test % ll
insgesamt 0
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixa.txt
-rw-rw-r-- 1 martin martin 0 Sep 19 23:56 prefixb.txt
ご覧のとおり、それはdem等です -プレフィックスを複数回呼び出しても再び追加されません。
文字列の(長さゼロの)開始(^
)を置き換えるか、開始に続いてオプションのprefix
文字列をで置き換えることで機能しますprefix
。
これをシェルスクリプトまたはシェル関数のいずれかでカプセル化しておきます。
ただし、ファイル名のどの部分が拡張子を構成するかを把握する必要があるため、Postfixは少し難しくなります...