在远程服务器中,总是有一对文件,例如:-
在文件夹/Pair1中
IN_S-WW001_20160418100715.out IN_S-WW001_20160418100715.txt
在文件夹/Pair2
ar.MON.20160226.output.ZZ.out ar.MON.20160226.output.ZZ.txt
这只是文件的示例。一天中会产生很多文件。
一对文件中的文件名总是相同的,除了时间戳之外。从其他服务器,我需要通过 SFTP 连接到远程服务器,然后一对一对地检查。
逻辑:脚本应检查 .out 文件是否存在,然后抓取/下载 .txt 文件(从对中)。一旦 .txt 文件成功传输/下载,脚本将返回远程服务器并删除 .out 文件。
这是我的测试脚本:-
lftp sftp://$UserID:[email protected] -e "ls /home/adm/testfiles|grep .out; bye" >> $LOG
if [ $? -eq 0 ]
then
echo "Files exist, getting *.txt" >> $LOG
lftp sftp://$UserID:[email protected] -e "mget /home/adm/testfiles/*.txt -O /home/adm/test/ ; bye" >> $LOG
else
echo ".out files do not exist" >> $LOG
fi
问题是,它会列出所有扩展名为 .out 的文件,而不是逐对检查。我不知道如何对一对进行分类。我不擅长编写脚本,所以我不得不寻求帮助。
答案1
循环遍历 .out 文件的 for 循环应该可以工作。以下内容未经过测试,因为我不熟悉 lftp 及其输出。
对于 $(lftp sftp://$UserID: 中的文件[电子邮件保护]-e "ls /home/adm/testfiles|grep .out;bye") 做 echo "找到 .out 文件:$file" TXTFILE = $(echo $file | sed -e's/.out$/.txt/') lftp sftp://$用户ID:[电子邮件保护]-e“mget /home/adm/testfiles/$TXTFILE -O /home/adm/test/;再见” # 在这里进行删除 完毕