2013-07-02 53 views
1

我遇到了一個問題,因爲如何爲更改文件名進行BATCH調整。shell腳本來調整文件名(從最後)

我所有的文件看起來是這樣的:

1602017EN.MPG 1802312EN.MPG 等

我需要改變2事情所有文件名。

我需要將文件擴展名調整爲小寫,所以它讀取.mpg而不是.MPG。 對於這部分,我正在使用蘋果automator服務。這工作完美。

其次,我需要刪除最後2個字符,字母。

因此,第一個項目將讀取1602017.mpg等。

這將是完美的,如果它可以用我可以添加到我的automator服務的shell腳本來完成,所以它會在彼此之後更改no1和no2。

非常感謝你提前!

+0

你想在Unix shell腳本或Windows批處理文件?你使用了兩個標籤。 – Barmar

+0

@Barmar:很好的問題,但提到Apple Automator強烈建議Windows不相關(所以我刪除了'批處理文件'標籤)。 –

+0

@JonathanLeffler是的,讓OP知道這些東西是相互排斥的。 – Barmar

回答

1

假設你正在使用bash用於外殼腳本,你可以很容易地使用sed做到這一點:

for file in "[email protected]" 
do 
    name=$(echo "$file" | sed 's/[A-Z][A-Z].MPG$/.mpg/') 
    mv "$file" "$name" 
done 

(上尋找合理假設有在文件名中沒有新行工作)。

然而,你也可以做到這一點直接在bash無需調用外部程序:

$ for file in 1602017EN.MPG 1802312EN.MPG; do echo ${file/[A-Z][A-Z].MPG/.mpg}; done 
1602017.mpg 
1802312.mpg 
$ 
+0

請注意''$ @「'是'for'的默認值。 –

+0

是的。我知道。我不在乎;我更喜歡明確。 –

+0

感謝您的快速回復! 這些突擊隊員是否調整當前目錄中的所有文件?原因也有一些.pdf和其他文件,我不想碰那些.. –