Find

遞歸觸摸和gzip目錄中的所有HTML,CSS,JS文件

  • September 19, 2018

我正在嘗試優化 Nginx 伺服器。我啟用了 Gzip_Static_Module 來提供預壓縮的 gzip 靜態文件,例如 CSS、JS、HTML。

Nginx Wiki 說壓縮和未壓縮文件的時間戳匹配。所以,我試圖在 Gzipping 之前觸摸文件。

我正在嘗試*.gz使用以下命令觸摸並生成這些靜態文件:

$ su -c "find . -type f -name "*.css" -size +1024b -exec sh -c "touch {} \
   && gzip -9v < {} > {}.gz" \;"

$ su -c "find . -type f -name "*.js" -size +1024b -exec sh -c "touch {} \
   && gzip -9v < {} > {}.gz" \;"

$ su -c "find . -type f -name "*.html" -size +1024b -exec sh -c "touch {} \
   && gzip -9v < {} > {}.gz" \;"

但我收到“未找到使用者 {}”錯誤。

誰能幫我上面的命令有什麼問題?每當任何未壓縮文件的時間戳發生變化(Cronjob 可能是)時,是否有更好的方法可以自動生成 *.gz?

我認為您遇到了引用問題,因為您嘗試su -c ...執行的命令中包含雙引號。您可能想嘗試將整個內容包含在單引號中。

$ su -c 'find . -type f -name "*.css" -size +1024b -exec sh -c "touch {} && \
   gzip -9v < {} > {}.gz" \;'

您也可以轉義這些包含的雙引號,但這通常會使調試變得混亂,所以我會避免這種情況,但根據您的風格/口味偏好也是另一種選擇。

引用自:https://unix.stackexchange.com/questions/126794