wget:获取匹配正则表达式的文件

时间:2017-04-21 05:09:22

标签: linux unix download ftp wget

根据 wget 的手册页, - acccept-regex 是我需要选择性地传输名称与某个正则表达式匹配的文件时使用的参数。但是,我不确定如何使用 - accept-regex

假设我想在IMDB数据中获取文件 diffs-000107.tar.gz,diffs-000114.tar.gz,diffs-000121.tar.gz,diffs-000128.tar.gz 目录ftp://ftp.fu-berlin.de/pub/misc/movies/database/diffs/。 "的的diff \ -0001 [0-9] {2} \焦油\。广州&#34。似乎是一个正确的正则表达式来描述文件名。

但是,执行以下wget命令时

wget -r --accept-regex='diffs\-0001[0-9]{2}\.tar\.gz' ftp://ftp.fu-berlin.de/pub/misc/movies/database/diffs/

wget不加选择地获取ftp://ftp.fu-berlin.de/pub/misc/movies/database/diffs/目录中的所有文件。

我想知道是否有人能说出我可能做错了什么?

2 个答案:

答案 0 :(得分:0)

我正在阅读wget手册页:

  --accept-regex urlregex
  --reject-regex urlregex
       Specify a regular expression to accept or reject the complete URL.

并注意到它提到了完整的网址(例如,像ftp://ftp.fu-berlin.de/pub/misc/movies/database/diffs/diffs-000121.tar.gz

所以我建议(没有尝试过)使用
  --accept-regex='.*diffs\-0001[0-9][0-9]\.tar\.gz'

(也许也会提供适当的--regex-type

BTW,对于这样的任务,我还会考虑使用Python的一些脚本语言(或使用libcurlcurl

答案 1 :(得分:0)

请注意--accept-regex是完整的URL。但是我们的目标是一些特定的文件。因此,我们将使用-A

例如

wget -r -np -nH -A "IMG[012][0-9].jpg" http://x.com/y/z/ 

将从URL将所有文件从IMG00.jpg下载到IMG29.jpg。

请注意,匹配模式包含类似于外壳的通配符,例如“书”或“ zelazny196 [0-9] *”。

参考: wget手册:https://www.gnu.org/software/wget/manual/wget.html 正则表达式:https://regexone.com/