【AWS】s3 lsでファイルサイズ・ファイル名のみ・フォルダのみ表示する方法
生徒
「AWS CLIのs3 lsコマンドを使うと一覧が出ますけど、ファイルサイズだけやファイル名だけ、フォルダだけを表示する方法ってありますか?」
先生
「ありますよ。aws s3 lsの結果はオプションやパイプを組み合わせることで、必要な情報だけを抽出できます。」
生徒
「なるほど!それなら見やすく整理できますね。詳しく教えてください!」
先生
「では、実際にファイルサイズだけ、ファイル名だけ、フォルダだけを表示する方法を順に説明していきますね。」
1. s3 lsコマンドの基本
aws s3 lsは、S3バケットやフォルダ(プレフィックス)の内容を一覧表示するコマンドです。デフォルトでは日付、時刻、サイズ、名前が出力されます。
aws s3 ls s3://my-bucket/
実行結果例:
2025-08-05 12:34:56 12345 file1.txt
2025-08-05 12:35:10 67890 file2.jpg
PRE images/
PREと表示される行はフォルダ(プレフィックス)を意味します。
2. ファイルサイズのみを表示する方法
サイズだけを取得したい場合は、--human-readableのようなオプションはありませんが、LinuxやMacのawkコマンドを組み合わせて表示を絞れます。
aws s3 ls s3://my-bucket/ --recursive | awk '{print $3}'
これにより3列目(サイズ)だけが表示されます。バイト数での出力なので、必要に応じて人間が読みやすい形式に変換するスクリプトを組むのもおすすめです。
3. ファイル名のみを表示する方法
ファイル名だけを見たい場合もawkで4列目を取り出します。
aws s3 ls s3://my-bucket/ --recursive | awk '{print $4}'
結果はオブジェクトキー全体(フォルダ構造含む)が出ます。もしファイル名部分だけを取得したいならbasenameコマンドと組み合わせます。
aws s3 ls s3://my-bucket/ --recursive | awk '{print $4}' | xargs -n 1 basename
4. フォルダ(プレフィックス)のみを表示する方法
フォルダだけを表示する場合は、--recursiveを付けずに実行し、PRE行だけをgrepで抽出します。
aws s3 ls s3://my-bucket/ | grep PRE
これでフォルダ名だけを抽出できます。さらに名前部分だけにする場合はawkと組み合わせます。
aws s3 ls s3://my-bucket/ | grep PRE | awk '{print $2}'
5. 実運用で便利な応用例
- サイズの合計を求める:
awk '{sum+=$3} END {print sum}' - 特定拡張子のみ表示:
grep "\.jpg$" - 日時フィルタリング:
grep "2025-08-05"
これらを組み合わせれば、AWS S3の中身を効率的に確認できます。
6. 初心者への注意点
aws s3 lsは大量のオブジェクトがあると出力が非常に多くなるため、--recursiveを使う際は絞り込みと併用するのがおすすめです。また、サイズ表示や名前抽出のために外部コマンドを使う場合は、環境によって書き方が微妙に異なるので注意してください。