目标是我想监视来自不同服务器的一个目录。例如,远程服务器是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
随机登录cat
和list.txt
一个文件时,该文件就存在。
答案 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远程路径语法。)