如何使用read行从一个列表文件中移动另一个服务器中的文件?

时间:2015-03-15 08:13:03

标签: linux shell ssh

目标是我想监视来自不同服务器的一个目录。例如,远程服务器是user@host

我有list.txt要移动的文件的内容列表。 list.txt位于远程服务器中。

目前我有这段代码。

ssh user@host cat /full-path/list.txt |
{
while read line;
do mv user@host:/full-path/$line user@host:/full-path/done/;
done;
}

当我运行上面的代码时,错误存在。没有这样的文件或目录。

但是当我从user@host随机登录catlist.txt一个文件时,该文件就存在。

1 个答案:

答案 0 :(得分:1)

while循环在本地服务器上运行。您需要将脚本放在引号中,这样它就是ssh命令的参数。

...或者是这样的文件,如下:

ssh user@host <<':'
    while read line; do
        mv /full-path/"$line" /full-path/done/
    done </full-path/list.txt
:

......或者更简洁

ssh user@host 'cd /full-path && xargs -a list.txt mv -t done'

另请注意,缺少useless cat并且本地文件名解析(mv将不知道您尝试使用的SSH远程路径语法。)