「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
。
zmv
、perl
良いrename
名前変更ファイルをコピーしないがperl関数をrename
使用して以下のシステムコールを呼び出すと、ソースとターゲットが同じファイルシステムにある限り、呼び出される関数のみが呼び出されます。rename()
rename()
zmv
mv
rename()
-C
¹の代わりにスルーオプションを使用できますzmv
cp
mv