gsutil rsync
を使う
例えば、gs://aiueo/{01~10の数字}/**/foo.bar*
を全て落としてくる。
#!/bin/sh
gcloud config set project xxx
dest='dest'
mkdir -p $dest
file_regex='^(?!.*foo\.bar*)' # 参考: https://github.com/GoogleCloudPlatform/gsutil/issues/465
for k in `seq -w 1 10` ; do
# rsync ではワイルカードが使えないので script で愚直に埋めていく
gsutil -m rsync -r -x $file_regex "gs://aiueo/$k/" "$dest/"
done
ちなみに
構造を保ったままダウンロードすると、異なるフォルダに同名ファイルが存在していても無事にダウンロードができるというメリットがある。
素直に gsutil cp /foo/bar/**/hoge/
みたいにすると、平坦に配置されるため、同名ファイルがあると適切にダウンロードできない。