Объединить две команды GSUtil - PullRequest
0 голосов
/ 14 июля 2020

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

gsutil ls gs://projectname/bucketname/folder1/folder2/filename.png | \
 cp gs://projectname/bucketname/folder3/folder4/

Найдите / отобразите файл из указанного сегмента c и скопируйте тот же файл в папку сегмента. В приведенной выше команде я использую команду ls (list) и cp (copy), но это не работает должным образом.

Что-то похожее на сценарий оболочки ниже или команду linux, мы используем exe c и продолжайте следующую команду вправо.

find -type f -path '*schedule*/*' -name "*.png" -exec cp -n {} /tmp/MusicFiles \;

Ваш скорейший ответ очень признателен. Заранее спасибо ..!

1 Ответ

0 голосов
/ 16 июля 2020

Oneliner: From gsutil help cp:

  -I             Causes gsutil to read the list of files or objects to copy from
                 stdin. This allows you to run a program that generates the list
                 of files to upload/download.

Итак, some_program | gsutil -m cp -I gs://my-bucket.

Где некоторые программы могут быть gsutil ls ...

Дополнительно

gsutil принимает подстановочные знаки , поэтому эта команда будет выглядеть примерно так.

gsutul cp gs:/bucket-name/*schedule*/*/*.png gs://bucketname/folder3/folder4/

Обратите внимание, что там можно использовать одиночную звездочку * и двойную звездочку ** для рекурсивных подстановочных знаков.

...