【问题标题】:wget: obtaining files matching regexwget:获取匹配正则表达式的文件
【发布时间】:2017-09-17 23:09:06
【问题描述】:

根据 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/。 "diffs\-0001[0-9]{2}\.tar\.gz" 似乎是描述文件名的好正则表达式。

但是,当执行下面的 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/ 目录下的所有文件。

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

【问题讨论】:

    标签: linux unix download ftp wget


    【解决方案1】:

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

    例如,

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

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

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

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

    【讨论】:

      【解决方案2】:

      我正在阅读 wget 手册页:

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

      并注意到它提到了 完整的 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

      顺便说一句,对于此类任务,我还会考虑使用一些脚本语言 à la Python(或使用 libcurlcurl

      【讨论】:

      • 谢谢,巴西尔。我尝试了您的建议,甚至添加了“--regex-type=posix”。但同样的问题依然存在。
      猜你喜欢
      • 2011-06-27
      • 1970-01-01
      • 1970-01-01
      • 2011-05-15
      • 2013-02-11
      相关资源
      最近更新 更多