Edited at

AWS CLI s3 cp/mvでワイルドカードが使えないならxargsと併用するといいっぽい

More than 1 year has passed since last update.

AWS CLIでs3に大量ファイルをcopy/moveを試みようとするとぶち当たるワイルドカードが使えない問題

--recursiveオプションを使えばいいのですがいまいち解りにくくて萎えてたのですが、

普段からよく使うxargsと併用してみるとなんか直感的になったのでその方法を・・

ls -1 *.txt|xargs -I FILENAME aws s3 mv FILENAME s3://バケット名/FILENAME

xargsには -I replace-strオプションというのがあり、

xargsにパイプで渡ってきた行をreplace-strで指定した文字に置き換えてくれて、

しかも置き換え文字は何度でも登場させてもいいので

まず、ls -1 *.txtとして対象ファイルを1ファイルごと改行付きで出力させ

aws s3 cp/mvのLocalPath S3Uriの部分にreplace-strを設定・指定してあげればOKです。

先の例ではlsの結果がxargsではFILENAMEという置き換え文字のところに当てはまり

aws s3 cp/mvのごく普通の書き方として実行されます。

もちろんパイプ中にgrep -v等でlsの結果からファイル名を対象外にしたりも出来るので

随分直感的に扱えるようになりました。