我尝试使用此命令压缩所有子目录中的所有 css 文件。
find . -iname "*.css*" -exec gzip -c '{}' > '{}'.gz \;
但它只会创建一个 {}.gz 文件。我最终使用了这个:
find . -iname "*.css" -exec sh -c "gzip -c '{}' > '{}'.gz" \;
效果很好。
问题是为什么第一个不起作用而第二个起作用?
注意:我可以很容易地使用 gzip -k 开关来保存源文件,但是 CentOS 7 上的 gzip 不支持它。
这完全取决于何时以及通过哪个 shell 来解释命令。首先,您的命令行 shell 解释 >,在 find 甚至开始之前创建一个本地文件。在第二个中,子shell 在 find 替换 {} 之后确实如此,因此它按预期工作。