我正在尝试将单个文件从本地服务器复制到 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
它会显示一个错误,如目标不明确。经过一番谷歌搜索,我了解到 cp 或其变体(如 scp)不支持多个目标。现在我有一个想法,先使用 find 命令列出文件夹。
find 命令将会像
find /local/opt/path1/sub/ -name file.jar
但是如何在我的脚本中实现它?
答案1
尝试改变
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/