1

У меня есть список 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-адрес в текстовом файле. Возможно ли это с помощью сценария оболочки?

2 ответа2

2

Вот что я сделал:

#!/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/
1

Используйте GNU Parallel:

parallel ytdl {} -a :::: urlfile

Чтобы узнать больше, посмотрите вступительные видеоролики: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1 и проведите час, изучая учебник http://www.gnu.org/software/parallel/parallel_tutorial.html Ваша команда линия будет любить тебя за это.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .