下载没有目录的特定类型的所有文件

时间:2014-01-25 21:34:03

标签: linux bash shell recursion wget

我正在尝试从此基本网址“http://runawaypodcast.com/wp-content/uploads/2014/”下载所有“.m4a”播客文件,并忽略已下载的文件。

这是我当前的代码(它不搜索子目录)

#!/bin/bash
lynx --dump 'http://runawaypodcast.com/wp-content/uploads/2014/01/' | awk '/http/{print $2}' >> temp.txt
while read link || [[ -n "$link" ]]; do
    if [[ $link == *m4a ]]
    then
        if grep -q $link usedlinks.txt; then
            echo "This episode has already been downloaded!"
        else
            wget $link
            echo $link >> usedlinks.txt
        fi
    else
        echo "Non-audio file detected!"
    fi
done < temp.txt
rm temp.txt

(我还想将下载的文件重命名为某种模式,我不知道你是否也能帮忙解决这个问题?)

2 个答案:

答案 0 :(得分:0)

根本不需要编写脚本。所有你需要做的 - 阅读wget手册页:)

wget -np -nd -c -A.m4a -r -k -erobots=off http://runawaypodcast.com/wp-content/uploads/2014/

对于大量文件重命名,有一个rename工具(在使用之前检查你拥有哪一个,因为它取决于你的发行版)


完整说明如何处理此下载。首次下载可以通过以下方式执行:

wget -np -nd -c -A.m4a -r -k -erobots=off http://runawaypodcast.com/wp-content/uploads/2014/ \
-o download.log

现在我们有了所有下载登录文件。要形成黑名单以供将来下载,我们需要从日志中构建文件列表:

v_black_list=$(sed -n '/--.*m4a/s=.*/==p' download.log | tr '\n' ',')

要使用此启用的黑名单运行wget,您必须使用-R选项:

wget -np -nd -c -A.m4a -r -k -erobots=off http://runawaypodcast.com/wp-content/uploads/2014/ \
-a download.log -R$v_black_list

请注意,在第二次运行时使用-a而不是-o来避免日志文件覆盖。

答案 1 :(得分:0)

您可以使用wget在一行中为您抓取网站。它可以为您下载所有* .m4a文件,然后保存在目录中,就像它们存储在网站上一样。这是一个帮助您入门的基本命令,但您需要调整选项以完全按照您的要求执行操作:

wget -r -H -l1 -np -N -A.m4a -erobots=off http://runawaypodcast.com/wp-content/uploads/2014/