2012-06-24 32 views
0

我想在一個被命名爲這種模式目錄中的文件重命名:如何重命名一批文件的特定圖案

string1-number.html 

例如:

English-5.html 

我想要什麼要做的就是將文件重命名這樣的:

string2-number.string3 

例如:

Dictionary-5.en 

我該怎麼做? 我用這個腳本,但什麼都沒有發生:

echo "English-5.html" | sed 's%\({English}\).\(\.*\)\(html\)%dictionary\2\en%' 

回答

0
echo "English-5.html" | sed 's%English\(-[0-9][0-9]*.\)html%dictionary\1en%' 

說明:

我在尋找English

後面跟着一個破折號,一個或多個數字,和一個點-[0-9][0-9]*.(我圍繞這個部分用轉義括號使它成爲一個組(組1))。

隨後html

在替換文本中,我使用\1到輸出組1中的內容,以及改變後的文本。

0

你有2個錯誤:不是必需的{...},你糊塗\..

\.字面匹配點,而.單個字符相匹配。

echo "English-5.html" | 
sed 's%\(English\)\(.*\)\.\(html\)%dictionary\2.en%' 
0

這個答案顯示了已經發布sed命令一些不重要的優化,並展示瞭如何實際重命名文件(在當前文件夾):

for f in *; do mv "$f" $(echo "$f" |\ 
sed 's/^English-\([0-9]\+\)\.html$/dictionary-\1\.en/'); done