2

我有一个文件夹,其中包含数百个带有图像的文件夹,每个文件夹中有 4 个具有随机名称的图像,我需要做的是遍历所有子文件夹,读取每个子文件夹的 4 个图像名称并运行此命令在他们:

 convert \( $subdir/$file1.jpg $subdir/$file2.jpg -append \) \( $subdir/$file3.jpg $subdir/$file4.jpg -append \) +append $subdir.jpg

这是它应该如何工作的:

foreach(subdirectory in directory){
   $img_arr[] = new Array(); 
   foreach(file in subdirectory){
       $img_arr[] = file;
   }

   exec("convert \( $subdirectory /$img_arr[0].jpg $subdirectory /$img_arr[1].jpg -append \) \( $subdirectory/$img_arr[2].jpg $subdirectory/$img_arr[3].jpg -append \) +append $subdirectory.jpg");
}

这是我到目前为止得到的:

#!/bin/bash

img=0;

IFS=$'\n'

for NAME in $(find -type f)
  do
   echo "Found a file: \"$NAME\""
done

我正在尝试使用 imagemagick 将 4 张图像合并为一张。谢谢!

4

2 回答 2

4

试试这个:

for dir in *
do
     test -d $dir || continue
     files=($dir/*.jpg)
     convert \( ${files[0]} ${files[1]} -append \) \( ${files[2]} ${files[3]} -append \) +append $dir.jpg
done
于 2012-11-11T23:38:14.507 回答
2

您最初的方法几乎没有问题,只是进行了一些更改:

for dir in $(find . -type d); do
    echo $dir; 
done
于 2012-11-11T23:47:16.803 回答