Rename
MMV海量文件重命名
我無法確定 mmv 模式。我有一堆具有這種模式的影片文件:
my.program.name.season.NN.episode.NN.-.title.avi
我需要將它們移動到:
my.program.name.sNNeNN.title.avi
我似乎找不到正確的模式…
TL; 博士
rename -n 's/^((\w+\.+){3})(.).*\.(.*)\.(.).*\.(.*)\.\-(\..*)$/$1$3$4$5$6$7/' *
\w+
匹配一個或多個單詞字元,即[a-zA-Z0-9_]+
$$ 1 $$\.+
匹配一個或多個 dot(.
) 字元$$ 2 $$ 注意
\.
匹配字元.
。我們需要在正則表達式中使用as\.
來表示具有特殊含義。被稱為轉義碼,它恢復後面字元的原始字面意思。.``.``\
(\w+\.+){3}
最多匹配上述任何精度的 3 倍$$ 1 $$,$$ 2 $$
^
從文件名的開頭(匹配名稱的開頭)開始的字元組。這將匹配或返回
my.program.name.
請注意,正則表達式周圍的額外括號用於匹配分組。分組匹配開始(
和結束)
並用於提供所謂的反向引用。反向引用包含儲存在特殊變數*$1*、$2、…、$9中的匹配子字元串,其中 $1 包含與第一對括號匹配的子字元串,依此類推。
.
元字元點 (.) 匹配任何單個字元。例如...
匹配任意 3 個字元。因此,(.)
我們匹配它的第一個season
字元s
。.*\.
匹配上面單個字元之後的所有內容,直到.
看到第一個字元。如您所見,我們沒有將其擷取為一組匹配項,因為我們希望將其從我們的名稱中刪除,即匹配項eason.
。(.*)
匹配上述匹配後的所有內容。這符合NN
. 此處使用括號是因為我們希望將其保留在文件名中。\.
在上述匹配之後匹配單個點。.
先後後繼NN
。(.)
再次使用這個我們匹配上述匹配後的第一個單個字元。這只會返回e
。.*\.
將匹配上述匹配之後的所有內容,直到 first.
。會匹配pisode.
。(.*)
匹配上面匹配中最後一個匹配點之後的任何內容。這將匹配第二個NN
。\.\-
匹配一個點.
,後跟一個破折號-
。將匹配或返回.-
- 最後
(\..*)$
匹配一個點.
和後面的所有內容,直到文件名的結尾。$
匹配文件名或輸入字元串的結尾。注意:刪除
-n
選項以執行實際重命名。