使用shell脚本删除服务器中的文件

Vij*_* DJ 3 unix bash shell

在对所有文件进行wget后如何删除服务器中的文件?
我知道删除命令工作,当你在服务器上完成一个ftp,但我在运行shell脚本时无法使用该命令.下面是我的剧本,请让我知道它有什么问题.

#!/bin/bash

filelist='ls *20120330*'
for file in $filelist
do
ftp -vn <$hostname> <<EOFD
  quote USER <username>
  quote PASS <Pass>
binary
 ls -lrt *20120330*
 delete $filelist
quit
EOFD
done
Run Code Online (Sandbox Code Playgroud)

tri*_*eee 5

你要

for file in *20120330*
Run Code Online (Sandbox Code Playgroud)

而不是字面上的字ls和循环*20120330*.如果你的真实用例更复杂,那么你可能有理由想要一个变量中的文件列表,但我猜你不会,也绝不会.

(你可能在想的是

for file in `ls *20120330*`
Run Code Online (Sandbox Code Playgroud)

但由于不同但相关的原因,这也是错误的.另见http://porkmail.org/era/unix/award.html#ls)

切线地说,您最好创建一个删除所有文件名的脚本,而不是为要删除的每个文件创建一个新的ftp会话;

#!/bin/bash

dellist=
nl='
' # yeah, nl is a newline in single quotes
for file in *20120330*
do
    dellist="delete $file$nl"
done
ftp -vn <$hostname> <<EOFD
  quote USER <username>
  quote PASS <Pass>
  binary
  ls -lrt \*20120330\*
  $dellist
  quit
EOFD
Run Code Online (Sandbox Code Playgroud)