名前変更を使わずにムービーファイル名から日付を繰り返し削除します。

名前変更を使わずにムービーファイル名から日付を繰り返し削除します。

「Gone with the Wind」などの別々のディレクトリと、「Gone with the Wind(1939).mp4」などのファイル名を含む「Movies」ディレクトリがあります。

「(1939)」部分を削除して名前を変更したいので、結果は「Gone with the Wind.mp4」です。

osxでは、次のように名前を変更するだけです。

rename 's/ \(.*?\)//' *.mp4

名前の変更を使わずにこれを行う方法は?

答え1

このrenameコマンドはファイルをコピーしません。

touch 'Gone with the Wind (1939).mp4'

ls -li Gone*.mp4
129371 -rw-r--r-- 1 roaima roaima 0 Dec 14 14:33 Gone with the Wind (1939).mp4

rename 's/\s*\(\d{4}\)//' Gone*.mp4

ls -li Gone*.mp4
129371 -rw-r--r-- 1 roaima roaima 0 Dec 14 14:33 Gone with the Wind.mp4

inode 番号は同じままで、これはまだ同じファイルであることを示します。

答え2

Macosにあるように見えるため、シェルが最も可能性が高いzshため、次のことができるはずです。

autoload -Uz zmv
zmv -n '(**/)(*)[[:space:]]##\(<1800-2022>\)(.mp4)' '$1$2$3'

(次 -nのために削除試運転必要に応じて、4桁の数字を数値範囲の代わりに<1800-2022>置き換えることができます。[0-9](#c4)

使用する代わりにrename

zmvperl良いrename 名前変更ファイルをコピーしないがperl関数をrename使用して以下のシステムコールを呼び出すと、ソースとターゲットが同じファイルシステムにある限り、呼び出される関数のみが呼び出されます。rename()rename()zmvmvrename()


-C¹の代わりにスルーオプションを使用できますzmvcpmv

関連情報