ls 在 awscli returns "PRE" 中。为什么以及如何摆脱它
ls in awscli returns "PRE". Why and how to get rid of it
在gitbash中使用awscli,命令
aws s3 ls "s3://directory/"
returns列表
PRE "filename"
这很不方便,因为我需要对输出执行进一步的命令,而且我只需要给定目录中的 file/directory 个名称。
例如,如果能够做到:
for dir in $(aws s3 ls s3://directory/) do
aws s3 ls $dir | grep .json;
done
有什么解决这个问题的建议吗?
你可以用
之类的东西来做到这一点
aws s3 ls s3://directory --recursive | awk '{print }' | grep .json
要列出所有文件夹:
aws s3 ls s3://bkt --recursive | tr -s ' ' | cut -d ' ' -f4- | grep "\/$" | sed 's/\/$//'
列出所有文件:
aws s3 ls s3://bkt --recursive | tr -s ' ' | cut -d ' ' -f4- | grep -v /$
要列出所有 .json 文件:
aws s3 ls s3://bkt --recursive | tr -s ' ' | cut -d ' ' -f4- | grep "\.json$"
列出所有 .json 和所有 .yaml 文件:
aws s3 ls s3://bkt --recursive | tr -s ' ' | cut -d ' ' -f4- | grep -E "(\.yaml|\.json)$"
列出所有文件 除了 .json 文件:
aws s3 ls s3://bkt --recursive | tr -s ' ' | cut -d ' ' -f4- | grep -v "\.json$"
什么是“PRE”?
You can think of prefixes as a way to organize your data in a similar way to directories. However, prefixes are not directories.
如何去掉输出中的“PRE”?
- 使用支持查询和输出格式的
aws s3api list-objects-v2
命令代替aws s3 ls
命令。
aws s3api list-objects-v2 --bucket <mybucket_name> --prefix <path> --query "Contents[?contains(Key, '.json')].Key"
请注意,这里的 <bucketname>
只是 存储桶的名称。请勿包含 s3://
或任何其他 /
.
--query
参数为您提供强大的输出。
例如
--query Contents[].Key
将打印所有密钥。
--query Contents[?contains(Key, '.json')].Key
指定 Key 的附加条件(Key
包含 .json
(例如扩展名)),然后最后的 .Key
告诉它什么属性json 输出到 return.
在gitbash中使用awscli,命令
aws s3 ls "s3://directory/"
returns列表
PRE "filename"
这很不方便,因为我需要对输出执行进一步的命令,而且我只需要给定目录中的 file/directory 个名称。
例如,如果能够做到:
for dir in $(aws s3 ls s3://directory/) do
aws s3 ls $dir | grep .json;
done
有什么解决这个问题的建议吗?
你可以用
之类的东西来做到这一点aws s3 ls s3://directory --recursive | awk '{print }' | grep .json
要列出所有文件夹:
aws s3 ls s3://bkt --recursive | tr -s ' ' | cut -d ' ' -f4- | grep "\/$" | sed 's/\/$//'
列出所有文件:
aws s3 ls s3://bkt --recursive | tr -s ' ' | cut -d ' ' -f4- | grep -v /$
要列出所有 .json 文件:
aws s3 ls s3://bkt --recursive | tr -s ' ' | cut -d ' ' -f4- | grep "\.json$"
列出所有 .json 和所有 .yaml 文件:
aws s3 ls s3://bkt --recursive | tr -s ' ' | cut -d ' ' -f4- | grep -E "(\.yaml|\.json)$"
列出所有文件 除了 .json 文件:
aws s3 ls s3://bkt --recursive | tr -s ' ' | cut -d ' ' -f4- | grep -v "\.json$"
什么是“PRE”?
You can think of prefixes as a way to organize your data in a similar way to directories. However, prefixes are not directories.
如何去掉输出中的“PRE”?
- 使用支持查询和输出格式的
aws s3api list-objects-v2
命令代替aws s3 ls
命令。
aws s3api list-objects-v2 --bucket <mybucket_name> --prefix <path> --query "Contents[?contains(Key, '.json')].Key"
请注意,这里的 <bucketname>
只是 存储桶的名称。请勿包含 s3://
或任何其他 /
.
--query
参数为您提供强大的输出。
例如
--query Contents[].Key
将打印所有密钥。--query Contents[?contains(Key, '.json')].Key
指定 Key 的附加条件(Key
包含.json
(例如扩展名)),然后最后的.Key
告诉它什么属性json 输出到 return.