gpt4 book ai didi

linux - Linux下的数据包jpeg优化

转载 作者:太空宇宙 更新时间:2023-11-04 05:31:23 25 4
gpt4 key购买 nike

我的服务器上有很多 JPEG 图像,他们每天都会添加。我需要优化这些图像。

为了优化它,我使用了下一个命令

find . -iname "*.jpg" -exec jpegoptim -m85 --strip-all {} \;

但是 find 命令可以找到所有图像,而不仅仅是新图像!我知道,我可以指定 -ctime 和 -mtime 参数,但是当 jpegoptim 优化图像时,图像创建时间会更改为现在!因此我无法为 find 命令指定上次修改时间。

我认为,该解决方案是将已处理的文件名保存在文本文件中,当 find 命令再次运行时排除已处理的文件。

我该怎么做?如何在文本文件中添加找到的文件名,以及如何检查下一个路径中文本文件中的文件名?

最佳答案

您可以使用 inotify-tools 中的 inotifywait (或其他一些 inotify 前端)持续监控包含 jpeg 的文件夹,并在上传后立即对其进行转换。

$ inotifywait -mrq --format '%w%f' -e create . | while read file; do
[ "${file##*.}" = "jpg" ] || continue;
[ -f "${file}" ] || continue;
echo "jpegoptim -m85 --strip-all '$file'";
done

这会递归地(-r)监视当前文件夹中的所有文件创建(-e create .),并且您必须自己检查文件扩展名(.jpg),如图所示,这意味着如果同一文件夹中存在大量非 jpeg 创建,这是不必要的开销。如果这对您来说是个问题,您可以使用 --exclude 参数并指定一个否定的正则表达式来过滤掉与所需扩展名不匹配的文件(这很麻烦,而且看起来不太漂亮和直接),或者您可以自己从 git 存储库中查看当前版本,它提供了 --include 过滤器(v3.14 没有它),并且仅让 inotifywait 报告已与您的文件匹配的文件。标准。

另请注意,这将默默地跳过文件名中带有换行符的文件。

关于linux - Linux下的数据包jpeg优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16117988/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com