wget如何指定下载位置?
Posted
技术标签:
【中文标题】wget如何指定下载位置?【英文标题】:How to specify the download location with wget? 【发布时间】:2010-11-07 21:21:20 【问题描述】:我需要将文件下载到 /tmp/cron_test/。我的 wget 代码是
wget --random-wait -r -p -nd -e robots=off -A".pdf" -U mozilla http://math.stanford.edu/undergrad/
那么是不是有一些参数可以指定目录呢?
【问题讨论】:
在 Unix SE 上类似:Download using wget to a different directory than current directory. 如果人们正在使用-i
或--input-files
,则很有可能希望使用-x
,以强制将其下载到与每个URL 模式匹配的相应本地目录。跨度>
【参考方案1】:
来自手册页:
-P prefix
--directory-prefix=prefix
Set directory prefix to prefix. The directory prefix is the
directory where all other files and sub-directories will be
saved to, i.e. the top of the retrieval tree. The default
is . (the current directory).
因此,您需要将-P /tmp/cron_test/
(短格式)或--directory-prefix=/tmp/cron_test/
(长格式)添加到您的命令中。另请注意,如果该目录不存在,它将被创建。
【讨论】:
-P /tmp/cron_test/ 不起作用,但删除 / like -P tmp/cron_test/ 有效,甚至创建不存在的目录。 Kangaroo 它可能不起作用,因为您的系统上没有 /tmp/cron_test/ :P 手册的描述使这个选项很难搜索。我不认为我想将某些内容保存为“目录前缀”的位置。感谢分享! 另外,您可以通过--no-host-directories
或-nH
按照serverfault.com/questions/354792/… 删除根文件夹
好吧,-P
选项对我不起作用(在 18.04 上),至少不适用于 -O
选项。还有其他需要注意的细节吗?【参考方案2】:
-O
是指定要下载到的文件路径的选项:
wget <uri> -O /path/to/file.ext
-P
是下载目录中文件的前缀:
wget <uri> -P /path/to/folder
【讨论】:
我会在尾部添加一个斜杠以使其成为/path/to/folder/
那里
投票赞成同时指定我不需要的-O
,但让我更有信心-P
是我需要的。
@louisMaddox 根据我机器上的手册页,默认前缀是“。” (即当前目录)向“目录前缀”添加尾部斜杠会导致双斜杠错误(即 my/favorite/dir/prefix//)此外,考虑到语义,“目录前缀”不需要尾部斜线。
@TimothyL.J.Stewart 没有双斜线错误。
注意:-O
覆盖 -P
,因此您不能只指定输出目录(想想dirname
和只输出文件名(想想basename
)。为此,只需 -O
指定完整文件路径。【参考方案3】:
确保您下载的任何内容的 URL 都是正确的。首先,带有?
等字符的URL无法解析和解析。这将混淆 cmd 行并接受任何未解析为源 URL 名称的字符作为您要下载到的文件名。
例如:
wget "sourceforge.net/projects/ebosse/files/latest/download?source=typ_redirect"
将下载到名为?source=typ_redirect
的文件中。
如您所见,了解有关 URL 的一两件事有助于理解 wget
。
我正在从一个租用磁盘启动,并且只有 Linux 2.6.1 作为资源(import os 不可用)。解决我将 ISO 下载到物理硬盘上的问题的正确语法是:
wget "(source url)" -O (directory where HD was mounted)/isofile.iso"
您可以通过查找wget
下载到名为index.html
的文件(默认文件)的时间点来计算正确的 URL,并具有您需要的文件的正确大小/其他属性,由以下命令显示:
wget "(source url)"
一旦 URL 和源文件正确并且正在下载到 index.html
,您可以停止下载 (ctrl + z) 并更改输出文件使用:
-O "<specified download directory>/filename.extension"
在源网址之后。
在我的情况下,这会导致下载 ISO 并将其作为二进制文件存储在 isofile.iso
下,希望能够挂载。
【讨论】:
【参考方案4】:“-P”是正确的选项,请继续阅读以获取更多相关信息:
wget -nd -np -P /dest/dir --recursive http://url/dir1/dir2
为方便起见,来自手册页的相关 sn-ps:
-P prefix
--directory-prefix=prefix
Set directory prefix to prefix. The directory prefix is the directory where all other files and subdirectories will be saved to, i.e. the top of the retrieval tree. The default is . (the current directory).
-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.
【讨论】:
【参考方案5】:人 wget: -O 文件 --output-document=文件
wget "url" -O /tmp/cron_test/<file>
【讨论】:
这不是一个答案,因为 -o 选项将卸载的文件放在指定的文件中。但问题是“如何将文件放入文件夹”。这是重复的存在答案以上是关于wget如何指定下载位置?的主要内容,如果未能解决你的问题,请参考以下文章