2012-12-30 247 views
1

我有一個Jekyll站點,它將所有HTML,CSS和Javascript處理成*.css.gz*.js.gz等文件。刪除.gz擴展名

問題是,我需要刪除gz擴展名,以便文件可以上傳到S3並使用GZip提供服務。

在我的makefile,我有這樣的:

find _site/ -iname '*.html' -exec gzip -n {} + 
find _site/ -iname '*.js' -exec gzip -n {} + 
find _site/ -iname '*.css' -exec gzip -n {} + 
find _site -iname '*.gz' -exec rename 's/\.gz$//i' {} + 

最後一行失敗:

find: rename: No such file or directory 
make: *** [all] Error 1 

當我運行命令find _site -iname '*.gz',我看到所有的gzip文件的正確輸出和據我所知,他們都存在。

如何刪除擴展名或修改上述命令以防止出現錯誤?在我的Makefile腳本

來源:http://fusion.dominicwatson.co.uk/2011/09/adding-gzip-to-my-jeyll-setup.html

+1

在Linux上重命名的命令是'mv'。沒有'重命名'這樣的東西。 – bmargulies

+0

啊,這是問題所在。我在Mac OS X上,但是如何使用'mv'來實現相同的效果呢? –

+0

您可能需要一個shell腳本來計算舊名稱的新名稱並運行mv OLD NEW。然後從查找中執行它。 – bmargulies

回答

3

做一個備份,然後試試這個:

for f in `find _site -iname '*.gz'`; do 
    mv $f ${f%.gz} 
done 

應該遍歷所有文件(從find命令),並重新命名他們一一使用mv${f%.gz}從文件名中去除.gz後綴。

0

find無法執行rename,很可能是因爲它沒有安裝在您的系統上。

您需要對其進行實施(例如,如果您使用的是Debian衍生產品,請使用prenameapt-get install perl)。

+1

請擴大您的答案。 –