使用bash和wget下载具有differents扩展名的文件

时间:2019-06-07 10:23:53

标签: bash file for-loop wget

我正在尝试下载带有bashwget的具有扩展名扩展名的图像。我必须直接定位文件,因为在父文件夹上出现403错误,因此无法通过定位父文件夹使用-A选项。

现在,我有以下代码可以在.jgp上正常工作,但是例如如果下一个文件是.png,则我的循环中断并继续到下一个文件夹,因此.png当前文件夹中的文件不会下载。

for i in {1..945}; do
    for j in {01..100}; do
        j=`printf '%02d' $j`
        ret=$(wget -O ch${i}-${j}.jpg https://www.domain.co/uploads/chapters/chapitre-${i}/${j}.jpg 2>&1)
        if [[ "$ret" =~ 404\ Not\ Found ]]; then
            break
        fi
    done
done

无论扩展名如何,我都无法找到一种下载文件的方法。

编辑:

所以这是我对感兴趣的人的最后摘要。
它的作用是:

  • 以递归方式爬行文件夹及其内容
  • 检查文件是.jpg还是.png,然后相应地重命名
  • 如果404,
  • 返回上一个循环(父文件夹)
  • 删除使用404创建的空文件


  • for i in {245..945}; do
        for j in {01..60}; do
            j=`printf '%02d' $j`
            ret=$(wget -O ch${i}-${j}.jpg https://www.yourdomain.co/uploads/parentfoldernumber-${i}/image-${j}.jpg 2>&1)
            if [[ $? -ne 0 ]]; then 
                ret=$(wget -O ch${i}-${j}.png https://www.yourdomain.co/uploads/parentfoldernumber-${i}/image-${j}.png 2>&1) 
            fi
            if [[ "$ret" =~ 404\ Not\ Found ]]; then
                break
            fi
        done
        find . -type f -empty -delete
    done
    

    1 个答案:

    答案 0 :(得分:3)

    我尝试了一些东西,也许会对您有所帮助

    $?是bash的命令,它返回上一次运行命令的输出。

    如果未找到* .png,则输出将不会为0。

    if [[ $? -ne 0 ]]; then ret=$(wget -O ch${i}-${j}.png http://localhost/l4urstyle/wp-content/uploads/2018/${i}/${j}.png 2>&1) fi

        if [[ "$ret" =~ 404\ Not\ Found ]]; then
           echo "breaking code"
            break
        fi
    

    希望这对您有所帮助。 如果这可行。请接受答案。 :D 以及关于0字节大小的文件正在下载。我会想一想,让您知道我可以如何帮助您。

    快乐编码:D