wget排除文件名列表

时间:2015-12-08 12:45:08

标签: bash wget

我需要使用fetchDir="ftp://user:pass@host/path/to/FileName*.csv.gz" excludeList="FileName314.csv.gz, FileName271.csv.gz, FileName161.csv.gz" wget ${fetchDir} --reject ${excludeList} -nc 从ftp服务器获取数据。我需要它来从一个目录中获取所有文件,除了文件名列表。所以,例如:

...
Rejecting ‘FileName000.csv.gz’.
Rejecting ‘FileName001.csv.gz’.
No matches on pattern ‘FileName*.csv.gz’.
--2015-12-08 14:27:28--  http://filename314.csv.gz/
Resolving filename314.csv.gz (filename314.csv.gz)... failed: Name or service not known.
wget: unable to resolve host address ‘filename314.csv.gz’

然而,这给了我一个如下错误:

<img src="E://bulbpro/pic_bulboff.gif"   width="150px" height="200px">

如何更改我的代码以使其接受我的拒绝?

1 个答案:

答案 0 :(得分:1)

--reject选项需要以逗号分隔的列表。但是,您的excludeList变量包含空格和逗号。在解释命令时,shell在扩展了shell变量之后执行word splitting

这导致只有第一个文件名模式被视为--reject选项的参数;剩余的列表成员将被解析为额外的URL。变量赋值应更改为:

excludeList="FileName314.csv.gz,FileName271.csv.gz,FileName161.csv.gz"

注意:实际上并不需要双引号,因为字符串中没有特殊字符。