我正在尝试编写bash脚本以获取S3存储桶中子文件夹的总大小。
我的存储路径 s3:// path1 / path2 /子文件夹
在path2文件夹中,我有很多子文件夹,如
2019_06
2019_07
2019_08
2019_09
2019_10
2019_11
2019_12
我需要在bash脚本中获取每个子文件夹的大小。
我写了一个类似
的脚本 #!/bin/bash
FILES=$(mktemp)
aws s3 ls "s3://path1/path2/" >> "$FILES"
cat $FILES
echo
for file in $FILES
do
if [ ! -e "$file" ]
then
s3cmd du -r s3://path1/path2/$file
echo "$file"; echo
continue
fi
echo
done
cat $ tmpfile的输出如下
2019_06
2019_07
2019_08
2019_09
2019_10
2019_11
2019_12
但是出现错误。在将变量传递到 for循环时。理想情况下,我的目标就像每次循环在 do .....中运行时一样。命令应该像
s3cmd du -r s3:// path1 / path2 / 2019_06
s3cmd du -r s3:// path1 / path2 / 2019_07
s3cmd du -r s3:// path1 / path2 / 2019_08
等...
这样我就可以得到文件夹的总大小
请帮助!
答案 0 :(得分:0)
您可以使用xargs
来做到这一点:
aws s3 ls "s3://path1/path2/" | xargs -n1 -I{} s3cmd du -r "s3://path1/path2/{}"