2012-01-01 52 views
0

我有一噸的文件被命名如下:bash腳本循環刪除特定指數

nn - xxxxxxxxxxxxxx-OOO.ext 

哪裏nn始終是一個兩位數字和xxxxx是文字的可變長度。 (-OOO的後綴在所有文件中都是靜態的)。應在環路什麼文件重命名爲:

xxxxxxxxxxxxxx.ext 

從而去除nn -(總第5個字符)和-OOO

回答

1

你可以做到這一點有兩個子業務:

$ name="nn - xxxx x xx xx xxxxx-OOO.ext" 
$ part1=${name:5}     # substring starting at position 5 
$ part2=${part1%-OOO.ext}   # remove `-OOO.ext` at the end of $part1 
$ final="$part2".ext 
$ echo $final 
xxxx x xx xx xxxxx.ext 
$ mv "$name" "$final" 
+0

我在循環構造中遇到了一些麻煩。你能否也展示一下? – 2012-01-01 15:39:48

+0

到目前爲止你對此有什麼看法?爲什麼你要求循環中應該發生什麼? – Mat 2012-01-01 15:41:31

+0

我目前有「for * in * .ext;」,但我不知道如何獲取文件名。 – 2012-01-01 15:45:01

0

echo $file_name | sed "s/.*-\s*\(.*\)-.*/\1.ext/"會給你「xxxxxxx.ext」你問的OP。