web-dev-qa-db-ja.com

ファイルの名前を変更する場合、キャプチャグループは無視されます

この形式のファイルがいくつかあります。

##。##-ファイル名.mp4

私はそれらの名前を変更したい:

s ## e ##。mp4

これは私が思いついたものです:

rename -n "s/^(\ d {2})\。(\ d {2})。*/s $ 1e $ 2.mp4 /"

http://regexr.com/ でテストしたときに機能しますが、Ubuntu 12.04インストールでコマンドを実行すると、すべてのファイルの名前がse.mp4に変更されます

そのため、グループが無視されているか、挿入されていないか、それらの行に沿った何かが見えます。目がくらむほど明らかな何かを見逃していますか、それとも何かが起こっていますか?

私はpyRenamerを使用することになりましたが、それは素晴らしく機能しましたが、renameが適切に機能しない理由を知りたいです。

応援よろしくお願いします。

9
0x0049

おそらく二重引用符を使用すると、シェルで$1$2を展開できるようになると思います

$ rename -nv "s/^(\d{2})\.(\d{2}).*/s$1e$2.mp4/" *.mp4
12.34 File name.mp4 renamed as se.mp4

一方、名前変更式を単一引用符で囲む

$ rename -nv 's/^(\d{2})\.(\d{2}).*/s$1e$2.mp4/' *.mp4
12.34 File name.mp4 renamed as s12e34.mp4
12
steeldriver