【问题标题】:Bash script for downloading multiple files from a list用于从列表中下载多个文件的 Bash 脚本
【发布时间】:2020-03-31 21:16:50
【问题描述】:

希望你们一切都好。我想知道你是否可以编写一个看起来像这样的 bash 脚本

需要注意的是我想要下载视频,所以它会使用 youtube-dl

主题1

HTTP:....

HTTP:...

话题2

HTTP:...

HTTP:...

话题3

HTTP:...

HTTP:...

等等等等

我将所有这些都保存在一个文本文件中,我想要一个 bash 脚本,它将创建一个以 TOPIC 名称作为文件夹的目录,然后下载 TOPIC 下的每个 URL,然后继续下一个一,创建一个目录,然后下载所有的 URL。

这有意义吗?我对 bash 的经验非常非常少。

我可以使用 youtube-dl 命令轻松下载一个,但必须一次下载一个会非常麻烦。

干杯

【问题讨论】:

  • 欢迎来到 Stack Overflow。 SO 是一个面向专业和爱好者程序员的问答网站。目标是您将一些自己的代码添加到您的问题中,以至少显示您为解决这个问题所做的研究工作。
  • 对两者都正确,欣赏方向!干杯

标签: bash macos youtube-dl


【解决方案1】:

要创建一个可执行的 bash 脚本来解决您的问题,请将这段代码粘贴到一个名为“download.sh”的文件中,该文件与您的“links.txt”文档所在的目录相同:

#!/bin/bash
topics=($(grep -v "http" links.txt))
for ((i = 0 ; i < ${#topics[@]} ; i++))
do
mkdir ${topics[$i]}
cd ${topics[$i]}
sed -n "/^${topics[$i]}/,/^${topics[$i+1]}/p" ../links.txt |\
sed '1d;$d' > to_be_downloaded.txt
youtube-dl -a to_be_downloaded.txt
rm to_be_downloaded.txt
cd ../
done

保存脚本,然后将脚本的权限更改为“可执行”,方法是将其粘贴到终端中:

chmod +x download.sh

然后从终端执行脚本:

./download.sh

和以前一样,这将在您的 links.txt 文件中的最后一个主题上失败:手动执行这些缺少的 url。如果您有任何问题,请告诉我。

【讨论】:

  • 这太棒了!非常感谢,按预期工作
【解决方案2】:

此解决方案依赖于将您的文本文件拆分成块,然后使用“-a”函数将 URL 传递给 youtube-dl:

-a, --batch-file FILE 包含要下载的 URL 的文件('-' for stdin),每行一个 URL。行首 和 '#', ';'或 ']' 被视为 cmets 并被忽略。

topics=($(grep -v "http" file))
for ((i = 0 ; i < ${#topics[@]} ; i++))
do
mkdir ${topics[$i]}
cd ${topics[$i]}
sed -n "/^${topics[$i]}/,/^${topics[$i+1]}/p" ../file |\
sed '1d;$d' > to_be_downloaded.txt
youtube-dl -a to_be_downloaded.txt
rm to_be_downloaded.txt
cd ../
done

这将在“文件”(您的列表)中的最后一个主题上失败:手动执行这些缺少的 url。它应该按照所有其他人的要求工作。

【讨论】:

  • @jpman1 - 非常感谢您的回复!干杯。所以我把上面的脚本保存到了一个 sh 文件中,我正在执行:bash download.sh -a --batch-file links.txt 我得到一个错误grep: file: No such file or directory;可能是因为我不知道我在做什么哈哈
  • 没问题;上面的代码旨在根据您的需要进行调整后复制粘贴到 bash 终端中。我将在下面添加另一个答案,其中包含有关如何将其制成 bash 脚本以及如何执行它的说明。
猜你喜欢
  • 2016-05-27
  • 2015-05-25
  • 1970-01-01
  • 2010-11-29
  • 2012-02-13
  • 2020-09-07
  • 1970-01-01
  • 2015-06-16
  • 2013-06-12
相关资源
最近更新 更多