初心者の質問です。この回答に従ってくださいファイル名の最後の部分を前に移動、同じことをしようとしていますが、私の場合のすべてのファイルには角かっこが含まれています。
私が望むのは、タイトルを括弧の反対側に移動することです(ファイル拡張子を保持します)。したがって、title ![s2_e2].mp4
名前は次のように変更されます。 [s2_e2]title !.mp4
最初の部分には感嘆符とスペースを含めることができますが、エスケープする必要がある他の文字を含めることはできません。
私はこれを考えましたが、最初の角かっこまでファイル名を削除します。rename -n 's/^.*\[//' *
私は正しい道を行っていますか? LinuxでPerlの名前変更ツールを使用してどうすればよいですか?
ありがとうございます!
答え1
私が正しく理解したら、角かっこ内のテキストをファイル名の先頭に移動する必要があります。ファイル名に角かっこセットがあると仮定すると、次のことができます。
rename -n 's/(.*)(\[.+?\])/$2$1/s' *
例でこのコマンドを実行すると、次のようになります。
$ rename -n 's/(.*)(\[.+?\])/$2$1/s' *
title ![s2_e2].mp4 -> [s2_e2]title !.mp4
答え2
私はここをzsh
使用しますzmv
:
$ autoload -Uz zmv # best in ~/.zshrc
$ zmv -n '(*)(\[*\])(*)' '$2$1$3'
mv -- 'title ![s2_e2].mp4' '[s2_e2]title !.mp4'
[
(ファイル名に/ペアが複数ある場合は、/の後に少なくとも1つの]
ペアが一番右から一番右に移動します。たとえば、移動されます。)[
]
]
[a [b c]] [d [e]]
[e]]
今日、Perlにはさまざまなバリエーションがあり、rename
そのトラップも多すぎて、すべて追いつくことが困難です。
zmv
また、独自の保護装置のいくつかを実装しました。始める前に競合がないか確認してください。どの名前を変更します。