2012-12-30 189 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

请扩大您的答案。 –