如何使用 sftp 从多个相似的命名文件中提取单个文件

如何使用 sftp 从多个相似的命名文件中提取单个文件

我想使用 sftp 从多个相似的命名文件中提取单个文件。

例如。如果我的远程服务器有以下文件,

file_0722_005.dat
file_0722_020.dat
file_0722_033.dat
file_0722_0022.dat

我只想拉其中任何一个。

在unix中我可以去

ls file_0722_*|head -1

但在 sftp 中 head/tail 不起作用。

请建议如何做到这一点!

答案1

SSHFS允许您在本地计算机上安装远程文件系统。它依赖 SFTP 作为通信协议,因此如果服务器允许 SFTP,则可以使用 SSHFS。您的客户端机器必须支持保险丝大多数现代 Unix 变体都是如此,包括 Linux、OSX、*BSD 和 Solaris。

mkdir myserver
sshfs [email protected]:/path/to/directory myserver
cd myserver
set file_0722_*
cp "$1" /local/directory
fusermount -u myserver

答案2

你可能会得到一个不同的客户。

lftp以( )为例lftp sftp://user@host/dir

glob eval -f 'get "$0"' file_0722_*

但是,如果文件名可能包含反斜杠、双引号或换行符,则不能使用它。如果您无法控制文件的名称,那么它就会成为命令注入漏洞(例如,名为 的文件file_0722_";!reboot"将使您运行该reboot命令)。

相关内容