Копирование нескольких файлов из корзины Google Cloud в разные каталоги на основе имени файла - PullRequest
0 голосов
/ 06 июня 2019

Предположим, у меня есть несколько файлов в разных подкаталогах с именами, такими как 20060630 AD8,11 +1015.WAV и 20050508_Natoa_Enc1_AD5AK_1.WAV.Теперь я знаю, что все эти файлы будут иметь подстроку типа AD (в первом файле) и AD, AK (во втором).Всего существует 16 таких классов (AD, AK, AN и т. Д.), Которые я создал как пустые папки в каталоге верхнего уровня.

Я хочу скопировать все эти файлы в соответствии сподстроки совпали в их соответствующий каталог.Теперь, используя gsutil, команды могут выглядеть следующим образом:

gsutil cp gs://bucket/Field/2005/20060630 AD8,11 +1015.WAV gs://bucket/AD/20060630 AD8,11 +1015.WAV

Как этот подход может работать для автоматизации задачи для тысяч файлов в одной корзине?

Можно ли предположить безопасно?такой подход, как:

if 'AD' in filename:
    gsutil cp gs://bucket/<filename> gs://bucket/AD/<filename>
elif 'AK' in filename:
    gsutil cp gs://bucket/<filename> gs://bucket/AK/<filename>

1 Ответ

2 голосов
/ 07 июня 2019

Для этого вы можете написать простой BASH-скрипт. Код будет довольно простым, поскольку gsutil поддерживает подстановочные знаки и может рекурсивно погружаться в подкаталоги для поиска ваших файлов.

#!/bin/bash

bucket_name=my-example-bucket
substring_list=(
  AD
  AK
  AN
)

for substring in "${substring_list[@]}"; do
   gsutil cp gs://$bucket_name/**/*$substring* gs://$bucket_name/$substring/
done

Я также вижу, что у вас есть некоторый опыт работы с Python, поэтому вы можете в качестве альтернативы использовать Клиент Python для Google Cloud Storage вместе с аналогичной стратегией подстановочных знаков.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...