我目前正在通过 cron 运行以下 jpegoptim 命令,让 jpegoptim 查找要压缩的 jpg 文件。
find /home/public_html/public/uploads -name '*.jpg' -type f -print0 | xargs -0 jpegoptim -o -p --size=300k --strip-all
这可行,但是有没有办法包含 .jpeg、.JPG 和 .JPEG,而不必多次运行相同的命令?另外,是否可以每小时运行一次,或者这会继续压缩相同的文件最终降低质量吗?
您可以通过使用两个不区分大小写的名称匹配来匹配所有
*.jpg
、*.JPG
、*.jpeg
、*.JPEG
。
find /home/public_html/public/uploads \
'(' -iname '*.jpg' -o -iname '*.jpeg' ')' -type f -print0 \
| xargs -0 jpegoptim -o -p --size=300k --strip-all
例如,您可以保留单独的时间戳以避免重新处理相同的文件
find /home/public_html/public/uploads \
-newer .STAMP '(' -iname '*.jpg' -o -iname '*.jpeg' ')' -type f -print0 \
| xargs -0 jpegoptim -o -p --size=300k --strip-all
touch .STAMP
从 bash 4.0 开始,您还可以使用以下选项:
#!/bin/bash
shopt -s nocaseglob
...
jpegoptim -m25 *.jpg # will match jpg, JPG, Jpg, etc.