S3バケットで特定のフォルダパスを見つける

S3バケットで特定のフォルダパスを見つける

このコマンドを使用してs3バケットからフォルダを検索しています。

aws s3 ls s3://bucketname/dir1/dir2/dir3 --recursive | grep -i 'dir3'

結果は次のとおりです。

dir1/dir2/dir3/1/aaa.txt 
dir1/dir2/dir3/1/bbb.txt
dir1/dir2/dir3/1/ccc.txt

ただし、次のようにファイルパスが必要です。

dir1/dir2/dir3

ディレクトリパスを取得するために不要なテキストを削除できます。

aws s3 ls s3://bucketname/dir1/dir2/dir3 --recursive | grep -i 'dir2' | head -n 1 | sed 's/1.*//'

しかし、これはgrepの複数の文字列検索では機能しません。

aws s3 ls s3://bucketname/dir1/dir2/dir3 --recursive | grep -i 'dir3\|folder3'

このような出力が必要です

dir1/dir2/dir3
folder1/folder2/folder3

ベストアンサー1

次のことができます。

for i in `aws s3 ls s3://bucketname/dir1/dir2/dir3 --recursive | grep -i 'dir3' `
do
dirname $i >>/tmp/file
done
sort -u /tmp/file >/tmp/file1

最後に、ファイルのサブディレクトリのリストを取得できます。/tmp/file1

おすすめ記事