2014-11-05 160 views
0

我正在創建一個bash腳本以自動將視頻放入Plex庫。對於迄今爲止看過的節目,以下正則表達式可以很好地檢測節目名稱,季節和劇集編號。匹配字符串中的字符串以強調字符串

#TV Show Name 
sed -n 's/\(.*\).S[0-9]\{1,\}.*/\1/p' 
#TV Show Season 
sed -n 's/.*\(S[0-9]\{1,\}\).*/\1/p' 
#TV Show Episode 
sed -n 's/.*S[0-9]*\(E[0-9]*\).*/\1/p' 

將視頻移動到Plex Library時真正麻煩。所有放置在腳本中處理的視頻都使用句點'。'作爲空間。

例如, Once.Upon.A.Time.S01E01.avi,Marvels.Agents.Of.SHIELDS01E01.avi等

由於Plex的庫格式使用下劃線 '_' 表示空格(這是在Linux服務器上),我只是使用sed將電視節目名稱中的句點替換爲下劃線。然後,我使用grep -i將其與Plex Library文件夾中包含電視節目的正確文件夾進行匹配,並使用show/episode編號的其餘部分將文件放在正確的位置。有趣的是,其中一個節目(事實上,S.H.I.E.L.D.的Marvel's Agents)恰好以其名字命名。

是否有一種簡單的方法將文件名和叢文件夾名稱匹配在一起,而不會出現上述的下劃線問題?

或者我應該簡單地爲這個特別的節目設置一個例外嗎?

回答

0

如果在將點轉換爲下劃線並將所有點轉換爲問號(例如sed "s/\./\?/g")之前將其存在,則可以輸入該名稱(例如Marvels?Agents?Of?S?H?I?E?L?D)以找到相應的Plex Library目錄。

find /path/to/library -type d -iname "Marvels?Agents?Of?S?H?I?E?L?D"

這應該給你你需要移動該文件的目錄,也將讓你後退工作正常轉換點在文件名下劃線,如果需要的話。

+0

完全按照所述進行工作,並學到新的東西:) 謝謝! – TearsOnTheMoon 2014-11-05 15:53:18