我需要使用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">
如何更改我的代码以使其接受我的拒绝?
答案 0 :(得分:1)
--reject
选项需要以逗号分隔的列表。但是,您的excludeList
变量包含空格和逗号。在解释命令时,shell在扩展了shell变量之后执行word splitting 。
这导致只有第一个文件名模式被视为--reject
选项的参数;剩余的列表成员将被解析为额外的URL。变量赋值应更改为:
excludeList="FileName314.csv.gz,FileName271.csv.gz,FileName161.csv.gz"
注意:实际上并不需要双引号,因为字符串中没有特殊字符。