Rename
從電影文件名中遞歸刪除日期而不使用重命名
我有一個目錄“電影”,其中包含單獨的目錄,如“亂世佳人”和文件名,如“亂世佳人 (1939).mp4
我想重命名它們,刪除“(1939)”部分,所以結果是“亂世佳人.mp4”
在 osx 上,我可以通過重命名來做到這一點,如下所示:
rename 's/ \(.*?\)//' *.mp4
不使用重命名如何做到這一點?
由於您似乎在 macos 上,因此您的 shell 很可能
zsh
,因此您應該能夠:autoload -Uz zmv zmv -n '(**/)(*)[[:space:]]##\(<1800-2022>\)(.mp4)' '$1$2$3'
(如果滿意,請刪除 空執行,替換
-n
為任何 4 位數字而不是數字範圍)。<1800-2022>``[0-9](#c4)
而不是使用
rename
.
zmv
,就像perl
’srename
重命名文件一樣,它不會複製它們¹,儘管雖然rename
使用rename()
perl 函式rename()
呼叫下面的系統呼叫,但zmv
只要源和目標位於同一文件系統上,mv
它就會呼叫rename()
以及呼叫。¹您可以使用雖然
-C
選項zmv
來使用cp
而不是mv
該
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 編號保持不變,證明它仍然是同一個文件