Shell 如何在linux上将不同扩展名的文件从一台服务器传输到另一台服务器?

Shell 如何在linux上将不同扩展名的文件从一台服务器传输到另一台服务器?,shell,unix,ssh,sftp,scp,Shell,Unix,Ssh,Sftp,Scp,下面是我的本地服务器中的文件 -rw-r----- 1 root root 0 Sep 25 15:03 one.xml -rw-r----- 1 root root 0 Sep 25 15:03 two.xml -rw-r----- 1 root root 0 Sep 25 15:03 data.csv -rw-r----- 1 root root 0 Sep 25 15:03 free.png -rw-r----- 1 root root 0 Sep 25 15:04 loaded.jpeg

下面是我的本地服务器中的文件

-rw-r----- 1 root root 0 Sep 25 15:03 one.xml
-rw-r----- 1 root root 0 Sep 25 15:03 two.xml
-rw-r----- 1 root root 0 Sep 25 15:03 data.csv
-rw-r----- 1 root root 0 Sep 25 15:03 free.png
-rw-r----- 1 root root 0 Sep 25 15:04 loaded.jpeg
我知道传输与下面相同扩展名的文件

    /usr/bin/sftp ${user}@${HostName} <<EOF
    cd $InputPath
    lcd $OutputPath
    put *.csv
    exit
EOF

scp ${InputPath}/*.csv ${user}@${HostName}:$OutputPath

/usr/bin/sftp${user}@${HostName}您可以尝试以下方法:

*.{jpeg,xml}
总而言之:

scp ${InputPath}/*.{jpeg,xml} ${user}@${HostName}:$OutputPath
试验
谢谢。上面的cmd正在工作。现在我尝试将fileExtns作为Extns=jpeg,xml scp${InputPath}/*。{$Extns}${user}@${HostName}:$OutputPath作为变量,但这会引发一些错误。有什么办法处理这个问题吗?正如您在中所读到的,
大括号展开发生在变量展开之前,所以我想没有办法这样做。
$ ls
a.jpeg  a.png  a.xml 
$ ls *{jpeg,xml}
a.jpeg  a.xml