我用这种方式列出亚马逊s3的一些文件:
s3cmd ls s3://my-bucket/$(date +%Y%m%d -d "1 day ago")*
此命令返回:
2015-07-20 23:51 10680004 s3://my-bucket/20150720-1437436434_ip.log.gz
2015-07-20 23:55 6180965 s3://my-bucket/20150720-1437436477_ip.log.gz
为了循环这些文件,我的代码是:
for file in $(s3cmd ls s3://my-bucket/$(date +%Y%m%d -d "1 day ago")*)
do echo ${file}
done
但结果是:
2015-07-20
23:51
10680004
s3://my-bucket/20150720-1437436434_ip.log.gz
2015-07-20
23:55
6180965
s3://my-bucket/20150720-1437436477_ip.log.gz
而不是预期的结果:
s3://my-bucket/20150720-1437436434_ip.log.gz
s3://my-bucket/20150720-1437436477_ip.log.gz
如何检索预期结果?
答案 0 :(得分:0)
尝试替换
$(s3cmd ls s3://my-bucket/$(date +%Y%m%d -d "1 day ago")*)
与
$(s3cmd ls s3://my-bucket/$(date +%Y%m%d -d "1 day ago")* | sed 's/^.* s3/s3/' )
通过切断尺寸部分的日期来替换初始输出。