使用通配符目标路径将文件 scp/cp 到远程服务器的另一种方法

使用通配符目标路径将文件 scp/cp 到远程服务器的另一种方法

我正在尝试将单个文件从本地服务器复制到 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/

相关内容