我有一个文件夹,其中包含许多充满图像的子文件夹。例如,请参阅所附图片。
基本上,我想循环遍历所有图像并缩小图像尺寸,使它们宽度不超过 1024 像素。它们都是 jpeg。
我知道 SIPS 命令,即
sips -Z 1024 *.png
但是,只有当所有图像都在当前目录中时才有效。
我该如何设置它来遍历所有子目录?
答案1
您可以使用 find 来运行它:find images/path -type f -name '*.png' -exec sips -Z 1024 {} \;
Find 将在 'images/path' 目录内搜索文件(-type f),带有 png 扩展名(-name '*.png'),并执行参数中的命令,用文件名替换“{}”,您需要以“\;”结尾命令。
答案2
我设法修改了一个对我有用的小 bash 脚本
#!/bin/bash
find "foldername" -type f | \
while read file ; do
echo "processing ${file}"
sips -Z 2000 ${file}
done