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