如何按顺序循环浏览一个文件夹中的图像并与另一个文件夹中的最新图像进行比较

How to loop sequentially through images in one folder and compare with the latest image in another folder

我正在尝试使用 shell 依次循环浏览一个文件夹中的图像,并与另一个文件夹中的最新图像进行比较。

我遇到的一个错误是 -

zsh: no matches found: /TiffOut/*.tiff(.om[1])

如果这不是唯一的问题,我也不会感到惊讶。

我希望实现的是:

这是我的完整脚本 -

#! /bin/zsh -
filelist=$(ls | grep '.tiff')
for image_file in $filelist
do
latest=$(/TiffOut/*.tiff(.om[1]))
magick $image_file $latest -evaluate-sequence Max '/TiffOut/out_${imagefile}.tiff'
done

感谢阅读

您的脚本存在一些问题 - 试试这个:

#!/bin/zsh

for image_file in *.tiff
do
  latest=(./TiffOut/*.tiff(.om[1]))
  magick "$image_file" "$latest" -evaluate-sequence Max "./TiffOut/out_${image_file}"
done

一些注意事项:

  • 您不需要grep来缩小文件列表;只需使用 glob 模式 (*.tiff).
  • 子目录相对于当前目录,即 .,因此 ./TiffOut/*.tiff。以 / 开头的路径是绝对路径,从根目录开始。
  • 获取最新文件的分配正在使用另一个 glob 模式,带有 .om glob 限定符。这不是命令,$(...) 表示。只有括号,它是一个数组的赋值,只有一个成员。
  • 变量(例如 $something)仅在用双引号引起来的字符串中扩展,而不是单引号。
  • 我对 imagemagick 的了解不够,无法告诉您 magick 命令是否满足您的要求。

您可以使用我的笔记中的术语来查找有关脚本片段的更多信息。
祝你好运!