1. ホーム
  2. linux

[解決済み] aws s3 lsコマンドでファイルのみを表示するには?

2023-03-02 15:03:41

質問

aws cliでs3バケットにあるファイルを以下のコマンドでリストアップしています( ドキュメント ):

aws s3 ls s3://mybucket --recursive --human-readable --summarize

このコマンドを実行すると、次のような出力が得られます。

2013-09-02 21:37:53   10 Bytes a.txt
2013-09-02 21:37:53  2.9 MiB foo.zip
2013-09-02 21:32:57   23 Bytes foo/bar/.baz/a
2013-09-02 21:32:58   41 Bytes foo/bar/.baz/b
2013-09-02 21:32:57  281 Bytes foo/bar/.baz/c
2013-09-02 21:32:57   73 Bytes foo/bar/.baz/d
2013-09-02 21:32:57  452 Bytes foo/bar/.baz/e
2013-09-02 21:32:57  896 Bytes foo/bar/.baz/hooks/bar
2013-09-02 21:32:57  189 Bytes foo/bar/.baz/hooks/foo
2013-09-02 21:32:57  398 Bytes z.txt

Total Objects: 10
   Total Size: 2.9 MiB

しかし、これは私の望む出力です。

a.txt
foo.zip
foo/bar/.baz/a
foo/bar/.baz/b
foo/bar/.baz/c
foo/bar/.baz/d
foo/bar/.baz/e
foo/bar/.baz/hooks/bar
foo/bar/.baz/hooks/foo
z.txt

ファイル一覧のみを表示するために、日付、時間、ファイルサイズを省略するにはどうしたらよいですか?

どのように解決するのですか?

のみではできません。 aws コマンドだけではできませんが、別のコマンドにパイプすれば、簡単に不要な部分を取り除くことができます。また --human-readable フラグを外すと、出力がより簡単になります。 --summarize フラグで最後にサマリーデータを削除します。

これを試してみてください。

aws s3 ls s3://mybucket --recursive | awk '{print $4}'

編集:ファイル名に含まれるスペースを考慮するようにしました。

aws s3 ls s3://mybucket --recursive | awk '{$1=$2=$3=""; print $0}' | sed 's/^[ \t]*//'