Makefile 删除.gz扩展名

Makefile 删除.gz扩展名,makefile,gzip,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 -

我有一个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'
时,我看到所有gzip文件都正确输出,并且据我所知它们都存在

如何删除扩展,或修改上面的命令以防止错误


my Makefile中的脚本源:

进行备份,然后尝试以下操作:

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

这将循环遍历所有文件(从find命令),并使用
mv
逐个重命名它们。
${f%.gz}
从文件名中删除.gz后缀。

查找
无法执行
重命名
,很可能是因为您的系统上没有安装它


您需要它的一个实现(例如,如果您使用的是Debian派生工具,则需要安装perl。

在Linux上重命名的命令是“mv”。没有“重命名”之类的东西。啊,这就是问题所在。我使用的是Mac OS X,但是如何使用
mv
来实现相同的效果呢?您可能需要一个shell脚本,该脚本根据旧名称计算新名称并运行mv old new。然后从find执行。请扩展您的答案。