wget 排除文件名列表
wget exclude list of filenames
我需要使用 wget
从 ftp 服务器获取数据。我需要它从一个目录中获取除文件名列表之外的所有文件。因此,例如:
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
然而,这给了我一个看起来像这样的错误:
...
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’
如何更改我的代码以使其接受我的拒绝?
--reject
选项需要一个以逗号分隔的列表。但是,您的 excludeList
变量包含空格和逗号。解释命令时,shell 执行 word splitting 在 扩展 shell 变量之后。
这导致只有第一个文件名模式被视为 --reject
选项的参数;其余列表成员将被解析为额外的 URL。变量赋值应该改为:
excludeList="FileName314.csv.gz,FileName271.csv.gz,FileName161.csv.gz"
注意:实际上不需要双引号,因为字符串中没有特殊字符。
我需要使用 wget
从 ftp 服务器获取数据。我需要它从一个目录中获取除文件名列表之外的所有文件。因此,例如:
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
然而,这给了我一个看起来像这样的错误:
...
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’
如何更改我的代码以使其接受我的拒绝?
--reject
选项需要一个以逗号分隔的列表。但是,您的 excludeList
变量包含空格和逗号。解释命令时,shell 执行 word splitting 在 扩展 shell 变量之后。
这导致只有第一个文件名模式被视为 --reject
选项的参数;其余列表成员将被解析为额外的 URL。变量赋值应该改为:
excludeList="FileName314.csv.gz,FileName271.csv.gz,FileName161.csv.gz"
注意:实际上不需要双引号,因为字符串中没有特殊字符。