Answers:
您必须将-np
/ --no-parent
选项传递给wget
(当然-r
/ --recursive
除外),否则它将遵循我网站上目录索引中指向父目录的链接。因此,命令如下所示:
wget --recursive --no-parent http://example.com/configs/.vim/
为避免下载自动生成的index.html
文件,请使用-R
/ --reject
选项:
wget -r -np -R "index.html*" http://example.com/configs/.vim/
要递归下载目录,该目录将拒绝index.html *文件并在没有主机名,父目录和整个目录结构的情况下进行下载:
wget -r -nH --cut-dirs=2 --no-parent --reject="index.html*" http://mysite.com/dir1/dir2/data
对于其他有类似问题的人。Wget跟随robots.txt
,这可能使您无法获取该网站。不用担心,您可以将其关闭:
wget -e robots=off http://www.example.com/
http://www.gnu.org/software/wget/manual/html_node/Robot-Exclusion.html
如果--no-parent
没有帮助,则可以使用--include
option。
目录结构:
http://<host>/downloads/good
http://<host>/downloads/bad
而您想下载downloads/good
但不想要downloads/bad
目录:
wget --include downloads/good --mirror --execute robots=off --no-host-directories --cut-dirs=1 --reject="index.html*" --continue http://<host>/downloads/good
您只需要两个标志,一个标志"-r"
用于递归和"--no-parent"
(或-np
),以便不进入'.'
and ".."
。像这样:
wget -r --no-parent http://example.com/configs/.vim/
而已。它将下载到以下本地树中:./example.com/configs/.vim
。但是,如果您不希望前两个目录,请使用--cut-dirs=2
前面的答复中建议的其他标志:
wget -r --no-parent --cut-dirs=2 http://example.com/configs/.vim/
而且它只会将您的文件树下载到 ./.vim/
实际上,我正是从wget手册中获得了这一答案的第一行,在4.3节末尾,他们有一个非常干净的示例。
在处理递归下载时,以下选项似乎是完美的组合:
wget -nd -np -P / dest / dir-递归http:// url / dir1 / dir2
为了方便起见,手册页中的相关片段:
-nd
--no-directories
Do not create a hierarchy of directories when retrieving recursively. With this option turned on, all files will get saved to the current directory, without clobbering (if a name shows up more than once, the
filenames will get extensions .n).
-np
--no-parent
Do not ever ascend to the parent directory when retrieving recursively. This is a useful option, since it guarantees that only the files below a certain hierarchy will be downloaded.
此版本以递归方式下载,并且不会创建父目录。
wgetod() {
NSLASH="$(echo "$1" | perl -pe 's|.*://[^/]+(.*?)/?$|\1|' | grep -o / | wc -l)"
NCUT=$((NSLASH > 0 ? NSLASH-1 : 0))
wget -r -nH --user-agent=Mozilla/5.0 --cut-dirs=$NCUT --no-parent --reject="index.html*" "$1"
}
用法:
~/.bashrc
或粘贴到终端wgetod "http://example.com/x/"