我想从 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/"
。