概要
詳細
aws s3 ls
aws s3 ls --recursive
をすると、以下のようなテキストが取れる
2023-04-28 15:51:30 6592 path/to/file/file1.jpg 2023-04-28 15:51:30 12042 path/to/file/file2.jpeg 2023-04-28 15:51:30 60251 path/to/file/file3.png 2023-04-28 15:51:30 7176 path/to/file/file4.jpg 2023-04-28 15:51:30 7176 path/to/file/file5.htlm 2023-04-28 15:51:30 7176 path/to/file/file6.jpg
これがファイルになっていると仮定
aws s3 ls s3://bucket-name/path/to/target/directory/ --recursive --profile my-profile > s3.txt
awkで抽出
cat s3.txt | awk '{ if (match($4, /^path\/to\/file\/.*(\.jpg|\.png)/)) { gsub(/^path\/to\/file\//, "", $4); print "./"$4 } }' ./file1.jpg ./file3.png ./file4.jpg ./file6.jpg
解説
awk '{ if (match($4, /^path\/to\/file\/.*(\.jpg|\.png)/))
これが$4
つまり4つ目のカラムから抜き出して、正規表現match
で特定のパターンが存在するかどうかを判定するif文
{ gsub(/^path\/to\/file\//, "", $4);
こちらが、gsub
で文字列の置換をしている部分。
先頭のpath/to/file/
の部分を削除している
print "./"$4
最後に先頭に./
を追記してプリントしている