![通过 SFTP 获取目录中的所有文件,并在文件名前附加一个变量](https://linux22.com/image/754282/%E9%80%9A%E8%BF%87%20SFTP%20%E8%8E%B7%E5%8F%96%E7%9B%AE%E5%BD%95%E4%B8%AD%E7%9A%84%E6%89%80%E6%9C%89%E6%96%87%E4%BB%B6%EF%BC%8C%E5%B9%B6%E5%9C%A8%E6%96%87%E4%BB%B6%E5%90%8D%E5%89%8D%E9%99%84%E5%8A%A0%E4%B8%80%E4%B8%AA%E5%8F%98%E9%87%8F.png)
我正在使用以下语法通过 SFTP 下载目录中的所有文件:
sshpass -p 'mypass' sftp name@$IP:/var/log/*
使用上面的一行代码,我可以从 /var/log 下载所有文件
但我希望将 $IP 附加到每个正在下载的文件名上
我可以针对每个文件执行此操作,即如果我下载单个文件,我可以在文件名前附加 IP。但正如您所猜到的,在某些情况下,我不知道有多少个文件,而且我认为如果我一直使用 SFTP 一次下载一个文件,那么这也是一种开销。
我尝试下载一个在文件名前附加了IP的文件:
sshpass -p 'mypass' sftp name@$IP < <(echo "get /var/log/file1.log ${IP}.file1.log" )
此外,我还检查了 SFTP shell 本身,没有发现任何类型的循环或参数扩展。所以显然如果有办法,它必须像我正在尝试的那样。
注意:SFTP 是唯一的选项,而不是 scp/rsync 等。