Я пытаюсь скопировать один файл с локального сервера в список серверов, описанных в Servers.txt. Целевой путь - что-то вроде /local/opt/path1/sub/*/lib/file.jar

* может соответствовать любой папке там.

 ls -ltrh  /local/opt/path1/sub/*/lib/file.jar

-rw-r--r-- 1 user user 538K Jan 31  2011 /local/opt/path1/sub/production/lib/file.jar
-rw-r--r-- 1 user user 538K Jan 31  2011 /local/opt/path1/sub/default/lib/file.jar
-rw-r--r-- 1 user user 538K Jan 31  2011 /local/opt/path1/sub/all/lib/file.jar

Но если я попробую это как

for i in `cat servers.txt` do scp file.jar user@$i: /local/opt/path1/sub/*/lib/; done

Это покажет ошибку как неоднозначную цель. После некоторого поиска в Google, я понял, что несколько целей не поддерживаются для cp или его вариантов, таких как scp. Теперь у меня есть идея сначала перечислить папки, используя команду find.

команда find будет похожа

find /local/opt/path1/sub/ -name file.jar

Но как реализовать это в моем сценарии?

1 ответ1

0

Попробуй поменять

for i in `cat servers.txt` do scp file.jar user@$i: /local/opt/path1/sub/*/lib/; done

в

for i in `cat servers.txt` do scp file.jar user@$i:/local/opt/path1/sub/*/lib/; done

Удалите пробел между user@$i: и /local/opt/path1/sub/*/lib/

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .