このコマンドを使用して、すべてのサブディレクトリのすべてのCSSファイルを圧縮してみました。
find . -iname "*.css*" -exec gzip -c '{}' > '{}'.gz \;
ただし、これは{} .gzファイルのみを生成します。私はこれを使用するようになりました:
find . -iname "*.css" -exec sh -c "gzip -c '{}' > '{}'.gz" \;
良い結果。
問題は、最初のものが機能せず、2番目のものが機能する理由です。
注:ソースファイルを保存するためにgzip -kスイッチを簡単に使用できますが、CentOS 7のgzipはそれをサポートしません。
答え1
コアは、コマンドが解釈されるタイミングとシェルによって決まります。まず、コマンドラインシェルは>を解釈し、findが起動する前にローカルファイルを生成します。 2番目の方法では、findが{}を置き換えた後、サブシェルがこれを行うので、期待どおりに機能します。