
我正在嘗試使用“重命名”重命名一堆文件,並且我的正則表達式設置得很好:
rename --verbose --path 's|^\[(....)\](.*)\.(.*)|$2 ($1).$3|' *
但我真的很想將每個文件放入具有共同開頭的目錄中,所以我嘗試了:
rename --verbose --path 's|^\[(....)\](.*)\.(.*)|$2 ($1)/$2 ($1).$3|' *
但這抱怨沒有一個目錄存在(因為它們不存在)。我是否缺少一個有用的重命名標誌,或者它們是一個更好的工具嗎?
答案1
如果您使用的是基於 Perl 的rename
,那麼沒有什麼可以阻止您呼叫mkdir()
建立遺失的目錄:
rename --verbose '
s|^\[(....)\](.*)\.(.*)|$2 ($1)/$2 ($1).$3| &&
mkdir("$2 ($1)")' *
這與您使用的 Perl 表達式相同,但mkdir()
在末尾添加了一個調用,以便在表達式匹配時建立目錄。
原始替換是否正確,或者是否有意義,我不知道(我不知道你有什麼類型的檔案名稱)。重點是,由於表達式是通用 Perl 表達式,因此您可以自由使用任何 Perl 程式碼,只要將$_
(預設變數)設為末尾的結果檔案名稱即可。