只有在使用 SFTP 将文件从远程服务器复制到我的服务器时,我才需要使用 if 函数过滤掉所需的文件。这是我尝试获取里面的所有数据/filesnew
。
#!/bin/bash
files=`sshpass -p 'XXX' sftp -P 2222 [email protected]<<EOF
cd /filesnew
ls
EOF`
files=`echo $files|sed "s/.*sftp> ls//"`
(
echo cd /filesnew
for file in $files; do
echo get $file /data/processedfiles/$file
done
) |sshpass -p 'XXX' sftp -P 2222 [email protected]
我需要过滤掉以"USER"
.
ex:
If($files==*USER*) then
echo get $file /data/processedfiles/$file
有人可以告诉我如何做到这一点吗?
sftp
用于获取与模式匹配的所有文件(以目录中/filesnew/USER*
的文字字符串开头的文件名)并将它们本地存储在目录中:USER
/filesnew
/data/processedfiles
请注意,没有理由列出文件。您也不必提及本地主机上的目标文件名,只需提及目标目录,并且仅当它与当前目录不同时。
mkdir
如果您确信本地目标目录始终存在,则可以跳过初始命令。作为附加说明,可能值得一提的
if
是,它是“保留字”,是“if
语句”的一部分,而不是 shell 中的函数。