Scp локализовать вывод Xargs - PullRequest
0 голосов
/ 12 ноября 2009

Я хочу составить список файлов вывода locate. Я хочу scp взять список.

Я не уверен насчет синтаксиса. Моя попытка с псевдокодом

locate labra | xargs scp {} masi@11.11.11:~/Desktop/

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

Ответы [ 2 ]

3 голосов
/ 11 июня 2010

xargs обычно принимает столько аргументов, сколько может уместить в командной строке, но при использовании -I он внезапно принимает только один. GNU Parallel http://www.gnu.org/software/parallel/ может быть лучшим решением:

locate labra | parallel -m scp {} masi@11.11.11:~/Desktop/

Поскольку вы смотрите на scp, могу ли я предложить вам также проверить rsync?

locate labra | parallel -m rsync -az {} masi@11.11.11:~/Desktop/
1 голос
/ 13 ноября 2009

Обычно {} - это find ism:

find ... -exec cmd {} \;

Где {} - текущий файл, с которым работает поиск.

Вы можете заставить xargs вести себя подобно:

locate labra | xargs -I{} echo {} more arguments

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

Итак, в контексте вашего примера:

locate labra | xargs -I{} scp '{}' masi@11.11.11:~/Desktop/

Обратите внимание на одинарные кавычки вокруг {}, так как это будет полезно для путей с пробелами в них.

...