我有一个可以访问的在线HTTP目录 . 我试图通过 wget 下载所有子目录和文件 . 但问题是,当 wget 下载子目录时,它会下载 index.html 文件,该文件包含该目录中的文件列表,而不自行下载文件 .
wget
index.html
有没有办法下载没有深度限制的子目录和文件(好像我要下载的目录只是一个我要复制到我的计算机的文件夹) .
解:
wget -r -np -nH --cut-dirs=3 -R index.html http://hostname/aaa/bbb/ccc/ddd/
说明:
它将下载ddd目录中的所有文件和子文件夹
-r :递归
-r
-np :不要去上层目录,比如ccc / ...
-np
-nH :不将文件保存到hostname文件夹
-nH
--cut-dirs=3 :但是通过省略前3个文件夹aaa,bbb,ccc将其保存到ddd
--cut-dirs=3
-R index.html :不包括index.html文件
-R index.html
参考:http://bmwieczorek.wordpress.com/2008/10/01/wget-recursively-download-all-files-from-certain-directory-listed-by-apache/
我能够通过VisualWGet感谢to this post . 它对我很有用 . 重要的部分似乎是检查 -recursive 标志(见图) .
-recursive
还发现 -no-parent 标志很重要,否则它会尝试下载所有内容 .
-no-parent
从 man wget
man wget
‘-r’ ‘--recursive’ 开启递归检索 . 有关详细信息,请参阅递归下载 . 默认最大深度为5 .
‘-np’ ‘--no-parent’ 递归检索时,不要提升到父目录 . 这是一个有用的选项,因为它保证只下载某个层次结构下面的文件 . 有关详细信息,请参阅基于目录的限制 .
‘-nH’ ‘--no-host-directories’ 禁用主机前缀目录的生成 . 默认情况下,使用'-r http://fly.srk.fer.hr/'调用Wget将创建以fly.srk.fer.hr/开头的目录结构 . 此选项禁用此类行为 .
‘--cut-dirs=number’ 忽略编号目录组件 . 这对于对将保存递归检索的目录进行细粒度控制非常有用 .
以“ftp://ftp.xemacs.org/pub/xemacs/”中的目录为例 . 如果使用'-r'检索它,它将在本地保存在ftp.xemacs.org/pub/xemacs/下 . 虽然'-nH'选项可以删除ftp.xemacs.org/部分,但仍然存在pub / xemacs . 这就是'--cut-dirs'派上用场的地方;它使Wget没有“看到”数字远程目录组件 . 以下是'--cut-dirs'选项如何工作的几个示例 .
没有选项 - > ftp.xemacs.org/pub/xemacs/ -nH - > pub / xemacs / -nH --cut-dirs = 1 - > xemacs / -nH --cut-dirs = 2 - > .
--cut-dirs = 1 - > ftp.xemacs.org/xemacs/ ...如果你只是想摆脱目录结构,这个选项类似于'-nd'和'-P'的组合 . 但是,与'-nd'不同,' - cut-dirs'不会丢失子目录 - 例如,使用'-nH --cut-dirs = 1',beta /子目录将被放置到xemacs / beta,如人们会期待的 .
wget 是一个宝贵的资源,我自己使用的东西 . 但是,有时地址中的字符 wget 标识为语法错误 . 我确信有一个解决办法,但由于这个问题没有具体询问 wget 我认为我会为那些毫无疑问会偶然发现这个页面寻找快速修复而无需学习曲线的人提供替代方案 .
有一些浏览器扩展可以做到这一点,但大多数需要安装下载管理器,这些管理器并不总是免费的,往往是一个眼睛,并使用大量的资源 . 这是一个没有这些缺点的人:
“Download Master”是Google Chrome的扩展程序,非常适合从目录下载 . 您可以选择过滤要下载的文件类型,也可以下载整个目录 .
https://chrome.google.com/webstore/detail/download-master/dljdacfojgikogldjffnkdcielnklkce
有关最新功能列表和其他信息,请访问开发人员博客上的项目页面:
http://monadownloadmaster.blogspot.com/
使用bookmarklet . 在书签中拖动this link,然后转到页面(从您要下载文件的位置),然后编辑并粘贴此代码:
(function(){ var arr=[], l=document.links; var ext=prompt("select extension for download (all links containing that, will be downloaded.", ".mp3"); for(var i=0; i<l.length; i++) { if(l[i].href.indexOf(ext) !== false){ l[i].setAttribute("download","download"); l[i].click(); } } })();
5 回答
解:
说明:
它将下载ddd目录中的所有文件和子文件夹
-r
:递归-np
:不要去上层目录,比如ccc / ...-nH
:不将文件保存到hostname文件夹--cut-dirs=3
:但是通过省略前3个文件夹aaa,bbb,ccc将其保存到ddd-R index.html
:不包括index.html文件参考:http://bmwieczorek.wordpress.com/2008/10/01/wget-recursively-download-all-files-from-certain-directory-listed-by-apache/
我能够通过VisualWGet感谢to this post . 它对我很有用 . 重要的部分似乎是检查
-recursive
标志(见图) .还发现
-no-parent
标志很重要,否则它会尝试下载所有内容 .从
man wget
‘-r’ ‘--recursive’ 开启递归检索 . 有关详细信息,请参阅递归下载 . 默认最大深度为5 .
‘-np’ ‘--no-parent’ 递归检索时,不要提升到父目录 . 这是一个有用的选项,因为它保证只下载某个层次结构下面的文件 . 有关详细信息,请参阅基于目录的限制 .
‘-nH’ ‘--no-host-directories’ 禁用主机前缀目录的生成 . 默认情况下,使用'-r http://fly.srk.fer.hr/'调用Wget将创建以fly.srk.fer.hr/开头的目录结构 . 此选项禁用此类行为 .
‘--cut-dirs=number’ 忽略编号目录组件 . 这对于对将保存递归检索的目录进行细粒度控制非常有用 .
以“ftp://ftp.xemacs.org/pub/xemacs/”中的目录为例 . 如果使用'-r'检索它,它将在本地保存在ftp.xemacs.org/pub/xemacs/下 . 虽然'-nH'选项可以删除ftp.xemacs.org/部分,但仍然存在pub / xemacs . 这就是'--cut-dirs'派上用场的地方;它使Wget没有“看到”数字远程目录组件 . 以下是'--cut-dirs'选项如何工作的几个示例 .
没有选项 - > ftp.xemacs.org/pub/xemacs/ -nH - > pub / xemacs / -nH --cut-dirs = 1 - > xemacs / -nH --cut-dirs = 2 - > .
--cut-dirs = 1 - > ftp.xemacs.org/xemacs/ ...如果你只是想摆脱目录结构,这个选项类似于'-nd'和'-P'的组合 . 但是,与'-nd'不同,' - cut-dirs'不会丢失子目录 - 例如,使用'-nH --cut-dirs = 1',beta /子目录将被放置到xemacs / beta,如人们会期待的 .
wget
是一个宝贵的资源,我自己使用的东西 . 但是,有时地址中的字符wget
标识为语法错误 . 我确信有一个解决办法,但由于这个问题没有具体询问wget
我认为我会为那些毫无疑问会偶然发现这个页面寻找快速修复而无需学习曲线的人提供替代方案 .有一些浏览器扩展可以做到这一点,但大多数需要安装下载管理器,这些管理器并不总是免费的,往往是一个眼睛,并使用大量的资源 . 这是一个没有这些缺点的人:
“Download Master”是Google Chrome的扩展程序,非常适合从目录下载 . 您可以选择过滤要下载的文件类型,也可以下载整个目录 .
https://chrome.google.com/webstore/detail/download-master/dljdacfojgikogldjffnkdcielnklkce
有关最新功能列表和其他信息,请访问开发人员博客上的项目页面:
http://monadownloadmaster.blogspot.com/
无需插件!
使用bookmarklet . 在书签中拖动this link,然后转到页面(从您要下载文件的位置),然后编辑并粘贴此代码: