Rename

從電影文件名中遞歸刪除日期而不使用重命名

  • December 14, 2021

我有一個目錄“電影”,其中包含單獨的目錄,如“亂世佳人”和文件名,如“亂世佳人 (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 編號保持不變,證明它仍然是同一個文件

引用自:https://unix.stackexchange.com/questions/681416