想象一下,我的目录如下:
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;
如何根据我的需要制作脚本?
答案 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