Я хочу получить последние имена файлов в каждом каталоге gcs

Я хочу узнать путь к последнему файлу в каждом каталоге, используя gsutil ls.

Выполнение команды в таком цикле очень медленное.

Я хочу, чтобы конечный результат был

Как я могу это сделать?

Я хочу узнать путь к последнему файлу в каждом каталоге, используя gsutil ls.

сценарий оболочки

for dir in dir_list[@];do
  file+=$(gsutil ls -R ${dir} | tail -n 1);
done

Выполнение команды в циклическом процессе происходит очень медленно.

Я хочу, чтобы конечный результат был

Есть ли другой способ?

изображение результатов

gs://bucket/dir_a/latest.txt
gs://bucket/dir_b/latest.txt
gs://bucket/dir_c/latest.txt
gs://bucket/dir_d/latest.txt

person toooouai    schedule 16.04.2021    source источник


Ответы (1)


Другой стратегии нет по уважительной причине: каталог не существует. Итак, вам нужно просканировать все файлы, получить метаданные, получить этот, который является последним, и сделать это для каждого похожего префикса.

Префикс — это то, что вы называете каталогами /path/to/prefix/. Вот почему вы можете выполнять поиск только по префиксу в GCS, а не по шаблону файла.

Итак, вы можете представить себе создание пользовательского приложения, которое для каждого отдельного префикса (каталога) создает параллельный процесс (форк), предназначенный для этого префикса. Таким образом, вы можете выполнять распараллеливание. Это не так просто написать, но вы можете!

person guillaume blaquiere    schedule 16.04.2021