bash,for 循环问题

bash, issue with for loop

我正在以这种方式列出来自 amazon s3 的一些文件:

s3cmd ls s3://my-bucket/$(date +%Y%m%d -d "1 day ago")*

这个命令returns:

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

如何检索预期结果?

尝试替换

  $(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/' )

通过截去尺寸部分的日期来替换初始输出。