簡體   English   中英

如何使用 aws cli 命令僅顯示 s3 存儲桶中的目錄

[英]How to display only the directories from s3 bucket using aws cli command

我需要顯示 s3 存儲桶中存在的所有目錄,其中一些目錄是隱藏的,只有當我將版本過濾為“顯示”而不是隱藏時才會再次顯示。

同樣的事情也發生在目錄中我們看不到文件的文件上,但是當我們在版本中選擇過濾器以“顯示”時,它會顯示文件。

我們如何在aws-cli中看到這些文件和目錄。 如果您有解決方案,請提供幫助。


例如:

roxor@ubuntu:~$ aws s3 ls s3://dw-etl-source-prod
workday dsr

我需要獲取 4 個目錄,但由於目錄包含版本控制,因此未顯示。 如果我過濾版本以顯示它會在 aws s3 UI 中提供所有文件,但我如何使用 AWS CLI 執行相同的操作。

檢查鍵的最后一個字符/

aws s3api list-objects-v2 --bucket <your_bucket> --prefix <prefix> --query 'Contents[?ends_with(Key, `/`)].[Key]' --output text

如果您使用的是基於 POSIX 的系統並且想要使用熟悉的aws s3 ls語法,請嘗試:

aws s3 ls --recursive <s3Uri> | cut -c32- | xargs -d '\n' -n 1 dirname | uniq

這是一個快速解釋。 截至 2020 年 11 月, aws s3 ls以以下格式打印對象:

<date> <time> <size> <path>

這個想法是使用cut從這個列表中提取<path> ,將它傳遞給dirname以提取目錄名稱,最后使用uniq避免重復。 cut -c32-將 s3 列表修剪到第 31 個字符。 如果您的文件太大,您可能需要調整它。

你可以試試看。

aws s3 ls s3://<bucket-name> --recursive --human-readable --summarize | awk '{print $5}' | awk -F '/' '/\// {print $1}' | sort -u

我的解決方案:

aws s3 ls://<your bucket>/<path>/<to>/ | awk '{print $2}'

我將這些解決方案中的一些組合成一個簡單的襯里,該襯里通過檢查目錄中的任何內容(但不是遞歸地)來工作,該目錄也是一個目錄(文件名以 / 結尾的任何內容)

aws s3 ls s3://<your bucket>/<path>/<to>/ | awk '{print $2}' | awk -F '/' '/\// {print $1}'

希望這有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM