Answers:
这是可以添加到bash脚本中的一种可能的解决方案。这是不理想的,因为它将为每个文件建立一个新的连接。
#!/bin/bash
# set variables
USER="username"
HOST="hostname"
file_list="file1 file1 file3 file4"
# delete each file
for file in $file_list; do
echo "rm $file" | sftp $USER@$HOST
done
exit 0
这种单线要好得多!file1-9是要删除的文件名,如果需要,可以使用变量,这是同一回事。
for file in file1 file2 file3 file4 file5 file6 file7 file8 file9; do echo -e "rm $file" >> sftp_batch; done; sftp -b sftp_batch username@hostname; rm sftp_batch
我通常lftp
会这样做。
$ mkdir adir
$ touch afile1 afile2
$ ls
afile1 afile2
现在我们删除
$ file_list="afile1 afile2"
$ lftp sftp://sam@skinner -e "cd ~/adir; mrm $file_list"
cd ok, cwd=/home/sam/adir
rm ok, 2 files removed
lftp sam@skinner:~/adir> ls
drwxr-xr-x 2 sam users 4096 Nov 4 11:52 .
drwxr-x--- 131 sam users 20480 Nov 4 11:51 ..
lftp sam@skinner:~/adir> bye
使其成为一个命令:
$ lftp sftp://sam@skinner -e "cd ~/adir; mrm $file_list; bye"
如果可以sftp,就不能运行ssh吗?如果是这样,则执行以下命令:
ssh user@hostname rm file1 file2
应该工作正常。如果您使用公用/专用SSH密钥,则不会出现密码提示。