删除.gz扩展名

时间:2012-12-30 23:34:38

标签: makefile gzip

我有一个Jekyll网站,可以将所有HTML,CSS和Javascript处理成*.css.gz*.js.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'时,我看到所有GZipped文件都正确输出,据我所知,它们都存在。

如何删除扩展程序,或修改上述命令以防止错误?

我的Makefile中的脚本来源:http://fusion.dominicwatson.co.uk/2011/09/adding-gzip-to-my-jeyll-setup.html

2 个答案:

答案 0 :(得分:3)

进行备份然后尝试:

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

这应该遍历所有文件(来自find命令),并使用mv逐个重命名。 ${f%.gz}从文件名中删除.gz后缀。

答案 1 :(得分:0)

find无法执行rename,很可能是因为它未安装在您的系统上。

你需要实现它(例如。prenameapt-get install perl如果你使用的是Debian衍生物)。