bash,for for循环问题

时间:2015-07-21 09:09:44

标签: bash for-loop ls

我用这种方式列出亚马逊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

如何检索预期结果?

1 个答案:

答案 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/' )

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

相关问题