Regular-Expression

刪除文件副檔名後的所有字元

  • May 27, 2021

我有幾十個文件,例如:

title.mkv]-[72+167] - "" yEnc  637005001 (1+889)

我想刪除“ .mkv ”之後的所有內容

我嘗試查找一些對我有幫助的正則表達式,但我不明白如何使用它們。

有人可以幫我嗎?

關於 等的注意事項rename參見prename

在這個答案中,使用了 Perl 變體,而不是 util-linux 的一種形式。如不是:

$ rename --version
rename from util-linux 2.31.1

但:

$ rename --version
/usr/bin/rename using File::Rename version 0.20

或類似的。


使用 Perl 重命名:

rename 's/\.mkv.*/.mkv/s' ./*.mkv*

首先使用該-n選項以確保它符合您的要求。

rename -n 's/\.mkv.*/.mkv/s' ./*.mkv*

簡而言之:

s/\.mkv.*/.mkv/s

是:

substitute/<THIS>/<WITH THIS>/s

\.mkv.*匹配文字點\.,然後匹配字元串mkv,最後匹配任何字元(包括\n您需要s標誌的字元)零次或多次.*

結果是替換.mkv<anything>.mkv.


有一些工具可以幫助閱讀和建構表達式,例如https://regex101.com/

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