2013-04-23 2 views
0

Я попытался этоКак заставить xargs выполнить две команды?

s3cmd Ls s3: // somebucket/данные/| awk '{print $ 4}' | xargs -I % s s3cmd -v -c s3.cfg сП% s 's3: // anotherbucket/данные /' & & s3cmd -c s3.cfg гт% s -v

это не работа, конечно, потому что вторая команда (s3cmd rm) не рассматривается как часть аргумента xargs ...

Как это сделать?

Предполагается, что операция перемещения s3cmd в моем случае не означает удаление исходного файла, поэтому я хотел заменить его копией и удалением, которое, как представляется, работает.

ответ

0

я в конечном итоге просто envoking ш (взял эту подсказку сформировать xarg справочную страницу) и работать оттуда, как это:

s3cmd Ls s3: // somebucket/данные/| awk '{print $ 4}' | xargs -n 1 sh -c ' s3cmd -v -c s3.cfg cp $ 0' s3: // anotherbucket/data/'; s3cmd -c s3.cfg rm $ 0 -v ';

+0

Вы также можете использовать 'parallel' вместо' xargs'. Вопрос: почему вы не принимаете свой собственный ответ? –

+0

Mate, ваш ключ шапки, кажется, сломан. – Jens