使用 wget 从区分大小写的 URL 网站下载到 Windows

使用 wget 从区分大小写的 URL 网站下载到 Windows

我使用 Gnuwin32 wget 用以下命令下载 emacs 手册(大约需要 30 分钟):

wget --mirror --page-requisites --convert-links --no-parent --accept .html,.htm,.css,.js http://www.gnu.org/software/emacs/manual/

下载的手册似乎没有问题,除了一个问题,Windows 不区分 index.html 和 Index.html,因此 wget 将两者下载到 Windows 中的同一路径中。例如,

http://www.gnu.org/software/emacs/manual/html_node/elisp/index.html

http://www.gnu.org/software/emacs/manual/html_node/elisp/Index.html

是不同的 URL,并且都下载到

当前文件夹/www.gnu.org/software/emacs/manual/html_node/elisp/index.html

有办法解决这个问题吗?

更新:

另一个示例不需要 30 分钟(仅需 30 秒)

wget -P new --mirror --page-requisites --convert-links --no-parent --accept .html,.htm,.css,.js http://www.gnu.org/software/emacs/manual/html_node/ses/index.html

使用 --no-clobber

wget -P new-nc --no-clobber -r -l inf --page-requisites --convert-links --no-parent --accept .html,.htm,.css,.js http://www.gnu.org/software/emacs/manual/html_node/ses/index.html

答案1

Windows 上的 Win32 子系统无法区分仅名称不同的文件。要理解我刚刚写的内容的全部含义,需要对 Windows 内部进行大量研究。

简而言之,Windows 上的每个程序都在某个“子系统”下运行。子系统是位于内核之上的用户空间“堆栈”,具有一组通用的 API 和库。

只有三个子系统:POSIX、Win32 和 OS/2。OS/2 已弃用,可能不再工作。99.9999% 的程序(包括 Gnuwin32 和 Cygwin 的程序)都在 Win32 下运行。而 Services For UNIX (SFU) 则在 POSIX 下运行。

如何让 Windows 7 的文件系统完全区分大小写?有一些好的答案,也有一些坏的答案。忽略有关注册表设置的废话;那都是废话。相关评论是 venimus 的“更新”评论。

简单来说,在 Windows 上运行一个可以正确区分大小写不同的文件的程序的唯一方法是使用 UNIX 子系统。幸运的是,wget 是此类子系统下非常常见的程序,因此您应该能够安装 SFU(如果您有权限这样做)并使用它。祝你好运。

相关内容