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の結果からファイル名を対象外にしたりも出来るので
随分直感的に扱えるようになりました。