我有一个 URL 列表,如下所示:
http://www.youtube.com/watch?v=QVgFCCQWBOs
http://www.youtube.com/watch?v=8TrMhR7ZpBk
http://www.youtube.com/watch?v=8ctAvtBJB3s
http://www.youtube.com/watch?v=xTB79UdZahU
http://www.youtube.com/watch?v=GjTlEM99rv8
http://www.youtube.com/watch?v=XRdUgPGsj3k
http://www.youtube.com/watch?v=_700uBiNv-A
每个 url 都在一个换行符上。我想要执行涉及每个 url 的命令,如下所示:
ytdl "<one url>" -a
我本质上想使用文本文件中的每个 URL 运行命令一。使用 shell 脚本可以做到这一点吗?
答案1
以下是我所做的:
#!/bin/sh
echo '---------------------------------------------'
echo 'Now downloading all videos from videoList.txt'
echo '---------------------------------------------'
while read p;
do ytdl "$p" -a;
done < videoList.txt
echo '---------------------------------------------'
echo 'Completed downloading all videos in the list'
echo '---------------------------------------------'
echo '---------------------------------------------'
echo 'Moving .m4a and .ogg files to correct folder'
echo '---------------------------------------------'
mv *.m4a ~/Music/youtubeDownloads/
mv *.ogg ~/Music/youtubeDownloads/
答案2
使用 GNU Parallel:
parallel ytdl {} -a :::: urlfile
要了解更多信息,请观看介绍视频:https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1并花一个小时完成教程http://www.gnu.org/software/parallel/parallel_tutorial.html您的命令行将会因此而爱上您。