Gzip CSS/JS 使用 OS X 终端

Gzip CSS/JS Using OS X Terminal

我正在尝试使用 OSX 终端在文件夹中创建所有 css 和 js 文件的 gzip 版本 (.gz)。我找到了以下命令,但是当我 cd 到一个测试文件夹并输入命令时,它没有输出任何内容,我希望它会在原始文件旁边的文件夹中创建一个 gzip 副本:

find . -regex ".*\(css\|js\)$" -exec bash -c 'echo Compressing "{}" && gzip -c --best "{}" > "{}.gz"' \;

我做错了什么?还是命令需要修改?

OS find 的 X 版本似乎不支持扩展的正则表达式。简单的解决方法是使用逻辑 or 运算符(-o 选项),如下所示:

find . \( -name "*\.js" -o -name "*\.css" \) -exec bash -c 'echo Compressing "{}" && gzip -c --best "{}" > "{}.gz"' \;

它将为每个找到的文件搜索文件扩展名和 exec bash 命令。

更新。 我实际上发现您的语法也可以。您需要使用 find 命令的 -E 选项来使用扩展的正则表达式。您可能还需要用双引号将模式括起来。

find -E . -regex "".*\(css\|js\)$"" -exec bash -c 'echo Compressing "{}" && gzip -c --best "{}" > "{}.gz"' \;

来自 find 手册页:

-E   Interpret regular expressions followed by -regex and -iregex         
     primaries as extended (modern) regular expressions rather than basic
     regular expressions (BRE's).  The re_format(7) manual page fully
     describes both formats.