2013-01-02 71 views
-1

我正在使用多文件重命名工具,可以根據正則表達式模式重命名文件名。比如我有文件名這樣的:在字符串中提取增量數的正則表達式

Otrazenie.(01.serija.iz.12).2011.XviD.SATRip.RiperAM.avi 
Otrazenie.(02.serija.iz.12).2011.XviD.SATRip.RiperAM.avi 
Otrazenie.(03.serija.iz.12).2011.XviD.SATRip.RiperAM.avi 

或者像這樣:

Beauty.and.the.Beast.S01E01.LostFilm.TV.avi 
Beauty.and.the.Beast.S01E02.LostFilm.TV.avi 
Beauty.and.the.Beast.S01E03.LostFilm.TV.avi 

這裏,我們只有改變裏面的字符串號(01,02,03 ...)

如何構建RegEx以從字符串中獲取該數字?

+1

[你有什麼嘗試?](http://whathaveyoutried.com/) – ruakh

+2

你在外星人和捉鬼敢死隊中很棒。 –

+0

您正在使用哪種語言? – mgamba

回答

-1

預測系列中的值將不可能總是可以根據單個文件進行更改。例如,想象一下從24個電視劇的第2季開始拉動劇集號碼。文件名24_02_07.avi中有三個可能的系列值。直到顯示下一個文件名稱(24_02_08.avi),不清楚哪個編號是系列值。

考慮到這一點,您可以運行以下bash腳本。它首先在當前目錄的文件中找到最長的公共前綴。然後,它發現在後面的前綴每個文件名稱中的數字:

set -- * 
files=$# 

prefix=$1 
while [ -n "$prefix" ]; do 
    set -- $prefix* 
    [ $# -eq $files ] && break 
    prefix=${prefix%?} 
done 

ls | sed -e "s/$prefix\([0-9]*\).*/\1/g" | sort -nu 

我假設,因爲當時沒有提及的語言,我們在命令行上。

使用Chris F.A. Johnson的解決方案找到前綴finding the longest common substring among filenames