用bash读取子目录

时间:2012-11-11 23:27:37

标签: bash scripting

我有一个包含几百个图像文件夹的文件夹,每个文件夹里面都有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张图片合并为一张。谢谢!

2 个答案:

答案 0 :(得分:2)

试试这个:

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

答案 1 :(得分:1)

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

for dir in $(find . -type d); do
    echo $dir; 
done