【问题标题】:wget set file name in batch downloadwget批量下载设置文件名
【发布时间】:2020-10-30 06:11:29
【问题描述】:

我正在尝试使用具有使用以下命令的 URL 的输入文件 (a.txt) 下载文件

wget -i a.txt

网址是这样的

https://domian.com/abc?api=123&xyz=323&title=newFile12
https://domian.com/abc?api=1243&xyz=3223&title=newFile13

我想通过使用标题标签从 URL 中设置文件的名称(例如在上面下载文件的 URL 名称需要为newFile12)但找不到任何解决方法。

为了完成它,我必须编写一个python脚本(类似于这个答案https://stackoverflow.com/a/28313383/10549469)并一个接一个地运行,有没有其他方法。

【问题讨论】:

  • 请展示您到目前为止尝试过的内容以及遇到问题的地方。
  • 我并没有被困住,而是在寻找是否有人知道没有python脚本的更好方法,即直接来自wget命令。 (我使用了这个答案stackoverflow.com/a/28313383/10549469中的脚本)
  • 只有 wget 无法做到这一点,但我包含了一个应该可以工作的脚本

标签: python bash wget


【解决方案1】:

查看wget --content-dispositionwget -O <outputfile name> <url> 的for 循环

以下命令下载文件名由服务器提供的文件 (vim-readonly-1.1.tar.gz) 而不是 download_script.php?src_id=27233

wget --content-disposition https://www.vim.org/scripts/download_script.php?src_id=27233

【讨论】:

  • 它不适用于长 URL,我有来自 youtube 视频的 URL,但它的名字仍然不好。
  • --content-disposition 在服务器支持的情况下有效。其他选项是您在 wget 命令中提供带有 -O 标志的名称
【解决方案2】:

您可以即时创建脚本并将其通过管道传输到 bash。比wget -i 慢一点,但会保留文件名:

 sed "s/\(.*title=\(.*\)\)/wget -O '\2' '\1'/" a.txt

当您对结果感到满意时,可以将其通过管道传输到 bash:

sed "s/\(.*title=\(.*\)\)/wget -O '\2' '\1'/" a.txt | bash

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多