aws s3 cp 文件从子目录的根目录获取,而不获取子文件夹?Powershell

aws s3 cp 文件从子目录的根目录获取,而不获取子文件夹?Powershell

s3://bucketname/yyyymmdd/foo/bar我在根目录中有一些文件,我想复制它们。我不想将任何子目录复制到根目录 (foo)。我在 powershell 中尝试这样做:

aws s3 cp "s3://bucketname" . --recursive --exclude "*/foo/*/*" --include "foo/*.*"  --dryrun

或者

aws s3 cp "s3://bucketname" . --recursive --exclude "yy*/foo/*/*" --include "foo/*.*"  --dryrun

我获取了 foo 中的文件,但也获取了一些存储的文件,例如s3://bucketname/otherdirectory/otherfiles。我尝试了一些替代方法:这似乎列出了存储桶中的每个文件:

aws s3 cp "s3://bucketname" . --recursive --exclude "*/foo/*/*" --include "*/foo/*.*"  --dryrun

我的直觉告诉我应该如此

aws s3 cp source destination --recursive --exclude "*" --include "*/foo/*.*" --dryrun

意思是/directory/*anyfilename.*anyextention,但是这会给我下面递归的每个文件s3://bucketname/yyyymmdd/foo/

我正在尝试编写一个没有 foreach 模式的单行代码,但我可能不得不诉诸于此。

答案1

弄清楚了:

(get-s3object -bucket bucketname | where{$_.key -like "*/foo/*"} | where{$_.key -notlike "*/foo/*/*"}).key  

此列表仅列出 foo 中没有子文件夹或子文件夹文件的文件。无论存储桶的 YYYYMMDD 如何,它都会执行此操作。我现在可以将其传送到 read-s3object 以获取文件。

get-s3object -bucket bucketname | where{$_.key -like "*/foo/*"} | where{$_.key -notlike "*/foo/*/*"} | read-s3object -folder .

相关内容