我的文件夹中有 10,000 张图像。我正在尝试将它们调整为 128 x 128。
sips -Z 128 *.jpg
给我这个错误:
-bash: /usr/bin/sips: 参数列表太长
我该如何解决这个问题?
按照其他答案的建议,分批进行。
这是第三种选择,与其他选择不同,它允许您并行化任务。此示例一次最多运行 4 个并行批处理,批处理大小为 100:
find . -name '*.jpg' -print0 | xargs -0 -n 100 -P 4 sips -Z 128
如果您有更快的驱动器和更多内核,则可以增加-P
CPU 数量。如果您有更大的图像并且想要更细粒度的批次,您可以减少-n
批次计数。
您可以尝试在一个简单的 for 循环中执行任务:
for file in *.jpg; do
sips -Z 128 "$file"
done;
单行脚本:
for file in *.jpg; do sips -Z 128 "$file"; done;
假设您在要处理的文件夹中...
find ./ -name "*jpg" -exec sips -Z 128 {} \;
应该可以工作,并一一处理它们,而不是一个大的参数列表。