我想下载很多文件(>数千万)。我有每个文件的 URL。我的文件中有 URL 列表URLs.txt
:
http://mydomain.com/0wd.pdf
http://mydomain.com/asz.pdf
http://mydomain.com/axz.pdf
http://mydomain.com/b00.pdf
http://mydomain.com/bb0.pdf
etc.
我可以通过下载它们wget -i URLs.txt
,但是它会超过一个文件夹中可以放置的最大文件数。
如何下载这么大的 URL 列表,以便将下载的文件分成包含文件名首字母的子文件夹?例如,:
0/0wd.pdf
a/asz.pdf
a/axz.pdf
b/b00.pdf
b/bb0.pdf
etc.
如果这很重要的话,我使用 Ubuntu。
也许是这样的:
在每行前面
awk
加上文件名的第一个字符,然后使用该字符在curl
命令中选择输出目录。您可以使用-P
GNU 实现的选项xargs
来并行运行多个提取。假设 URL 不包含空格、引号或反斜杠,但 URL 不应包含 URI 编码以外的内容(即使
curl
能够处理它们并自行进行 URI 编码)。给定您的示例输入,运行上述命令会产生:
ChatGPT 提供了一些 Python 中的工作代码(我确认它适用于 Python 3.11):
包含
somefile.txt
:更高级的变体:
代码: