我有一个Expect脚本,该脚本根据模式从远程位置检索文件并将它们放置在当前目录中。传输之后,我想删除从远程位置检索到的文件。我的脚本执行MGET并进行传输。我尝试根据用于执行MGET删除文件的模式使用RM命令,但是除我检索到的文件以外,我还可以删除其他文件。您能帮我删除从远程位置检索到的文件吗?
$ env(SSH_FILE)\ r“是脚本中的模式变量。例如:.835
sftp> rm *.835*
Removing /EdifecsFTP/Inbound835/W6BA/90404B277947nCOR0.835
Removing /EdifecsFTP/Inbound835/W6BA/90404B277947nCORS.835
我不想根据此模式删除
send "CD $env(SSH_CDIR)\r"
expect "No such file or directory" {quit;exit 1}
send "LCD $env(SSH_LCD)\r"
expect "path name does not exist" {quit;exit 1}
send "mget $env(SSH_FILE)\r"
send "rm $env(SSH_FILE)\r"
答案 0 :(得分:1)
您可以做的是:
mget完成后,获取本地目录中与模式匹配的文件列表:
set local_files [glob -directory $env(SSH_LCD) -tails $env(SSH_FILE)
并删除任何符合以下条件的远程文件名:
foreach f $local_files {
send "rm $f\r"
expect $prompt
}