如何在使用 wget 时排除某些目录?

如何在使用 wget 时排除某些目录?

我想从 FTP 下载一个目录,其中包含一些源代码。最初,我这样做了:

wget -r ftp://path/to/src

不幸的是,该目录本身是 SVN 签出的结果,因此有很多 .svn 目录,爬取它们会花费更长的时间。是否可以排除这些 .svn 目录?

答案1

wget -X directory_to_exclude[,other_directory_to_exclude] -r ftp://URL_ftp_server

SERVER
    |-logs
    |-etc
    |-cache
    |-public_html
      |-images
      |-videos ( want to exclude )
      |-files
      |-audio  (want to exclude)

wget -X /public_html/videos,/public_html/audio ftp:SERVER/public_html/*

答案2

wget --exclude-directories=.svn -r ftp://path/to/src

答案3

我想更广泛地回答这个问题,因为这个问题的主题可以通过搜索引擎找到:

--exclude-directories=list期望绝对路径 [1]。这意味着host.org/fu/bar/你必须写--exclude-directories=/fu/bar

如果您始终想排除具有特定名称的文件夹,无论其具体位置如何(例如“thumbs”文件夹),这可能会成为一个问题。

为此我们可以使用--reject-regex [2]像这样:--reject-regex="/thumbs/"。鉴于这是正则表达式而不是逗号分隔的字符串列表,我们可以通过以下方式排除多个文件夹regex1|regex2|regex3--reject-regex="/thumbs/|/css/"。请记住,某些字符(例如).在正则表达式中具有特殊含义,需要转义才能成为文件夹名称的一部分:"/\.svn/"

相关内容