如何使用bash shell

时间:2017-04-29 10:35:36

标签: linux bash shell unix

想象一下,我的目录如下:

dir
 |
 |--- sub1
 |     |
 |     |------filea.jpg
 |     |------fileb.jpg
 |
 |
 |--- sub2
       |
       |------filec.jpg
       |------filed.jpg
       |------sub21
                |
                |-------filee.jpg

我需要做的是将位于同一目录中的所有文件作为一个参数传递给某个可执行文件。

例如,对于上述情况,我需要:

upload.sh dir/sub1/filea.jpg dir/sub1/fileb.jpg
upload.sh dir/sub2/filec.jpg dir/sub2/filed.jpg
upload.sh dir/sub2/sub21/filee.jpg

我不擅长linux shell,我所做的是用脚本列出所有这些:

find dir -type f | while read myfile; do
    echo $myfile
done;

如何根据我的需要制作脚本?

1 个答案:

答案 0 :(得分:1)

使用find查找目录,然后对目录中的所有文件执行命令。使用通配符中的已知扩展名来防止它包含子目录。

shopt -s nullglob
find dir -type d | while read dir; do
    files=("$dir"/*.jpg)
    if [ ${#files[@]} -gt 0 ]
    then upload.sh "${files[@]}"
    fi
done