使用单个 ImageMagick 命令更改目录及其子目录中的所有图像?

Changing all images in a directory and its sub-directories using a single ImageMagick command?

我有一个包含多级子目录的目录,其中包含我想使用 ImageMagick 更改的 .jpg 文件。

要更改单个文件,我会 convert image0.jpg -resize x1000 -quality 82 small_image0.jpg

但是,除了使用单个命令对每个目录中的所有 jpg 文件之外,我该如何做呢?

即:

findbash

#!/usr/bin/env bash

path=("$@")

while IFS= read -ru9 -d '' pic; do
   dirname=$(dirname "$pic")
   basename=$(basename "$pic")
   printf 'Converting %s to %s\n' "$pic" "$dirname/small_$basename"
   convert "$pic" -resize x1000 -quality 82 "$dirname/small_$basename" || exit
done 9< <(find "${path[@]}" -type f -name '*.jpg' -print0)

假设您将脚本命名为 myscript,以图片路径作为参数执行它。

./myscript /path/to/pictures
  • /path/to/pictures 更改为正确的 path/directory,或添加更多 path/directory 并用 space 分隔,例如./myscript path1 path2 anotherpath morepath 而不是只有一个目录。