我列出了s3存储桶中的所有文件并将其写入文本文件中。例如,我的存储桶包含以下文件列表:
text.zip
fixed.zip
hello.zip
good test.zip
我使用以下代码:
fileList=$(aws s3 ls s3://$inputBucketName/ | awk '{print $4}')
if [ ! -z "$fileList" ]
then
$AWS_CLI s3 ls s3://$inputBucketName/ | awk '{print $1,$2,$4}' > s3op.txt
sort -k1,1 -k2 s3op.txt > s3op_srt.txt
awk '{print $3}' s3op_srt.txt > filesOrder.txt
fi
cat filesOrder.txt;
此后,当我从我创建的文件中迭代文件时(我将在循环结束时删除S3中的文件,因此不会再次处理该文件):
fileName=`head -1 filesOrder.txt`
文件如下所示:
text.zip
fixed.zip
hello.zip
good
所以问题是,列表无法正确列出带空格的文件。
由于文件名返回为“good”而不是“good test.zip”,因此无法从S3中删除该文件。
预期结果
text.zip
fixed.zip
hello.zip
good test.zip
我使用以下命令删除S3中的文件:
aws s3 rm s3://$inputBucketName/$fileName
答案 0 :(得分:0)
将完整文件路径放在双引号下。 例如:
aws s3 rm "s3://test-bucket/good test.zip"
在你的情况下,它将是:
aws s3 rm "s3://$inputBucketName/$fileName"
这里即使fileName有空格,也会被删除。