我需要执行jpeg 重新压缩针对数千个文件。我尝试过:
for image in *.jpg; do
image2=${image%.*}.jpg;
./jpeg-recompress /path/to/images/$image /path/to/images/$image2;
echo "Processing $image2 file...";
done
但却没有这样做,理由是:Maximum number of arguments exceeded
我尝试使用 find,如下所示:
find /path/to/images -iname “*.jpg” | while read image; do
(以及前一个论点的其余部分)
但它似乎什么也没做。我想知道如何在多个文件上利用这个程序?
jpeg-recompress image.jpg image.jpg
(确实取代了原来的版本)
答案1
只需查找即可做一些简单的事:
find /path/to/images -name '*.jpg' -exec jpeg-recompress {} \;
或者如果你有多个核心,你可以写一个循环来并行压缩多个文件
答案2
大型文件列表
有很多方法可以解决这个问题。首先想到的是使用 find。
for image in `find /path/to/jpegs -type f -name *.jpg`
do
something
done
还有一个xargs
可能有用的命令。
继续使用 for 循环可能会更有优势;相比单独使用 find,您可以将已处理的 jpeg 文件附加到日志文件中,这样下次运行命令时就可以跳过它们(如果您愿意的话)。