1

我有一个 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

4

2 回答 2

3

做一个备份,然后试试这个:

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

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

于 2012-12-30T23:45:14.010 回答
0

findcan't execute rename,很可能是因为它没有安装在您的系统上。

您需要它的实现(例如,prename或者apt-get install perl如果您使用的是 Debian 衍生产品)才能使其工作。

于 2012-12-30T23:48:08.547 回答