多级目录批量下载网站图片修订版,及改名方法-创新互联

3.10再次修改。经过多次测试发现mv方式不是很好用,不再采用mv方式,而是进入目录后再进行下载,此次测试达到了预期效果
修改后的版本为

#!/bin/bash
#下载
#author:falconhero
#qq:40594324
PATH=$PATH:$HOME/bin:/usr/local/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/bin:/root/bin
export PATH
mkdir -p /root/201010/{1..100}

for j in {1.100}
do
for i in {1..50}
do
cd /root/201010/$j
wget https://cache.yisu.com/upload/information/20200311/30/169178.jpg &

done
done

由于没注意导致重复下载了一次。后缀名变成了.jpg.1,原来的下载图片有的只下了一半,所以删除第一次下载的,保留第2次的

find . -name \*.jpg |xargs rm -f

重命名方法:

#!/bin/bash
for i in {10..78}
do
cd /root/201011/$i

rename ".jpg.1" ".jpg" *
done

可以再虚拟机里面下载,下载完毕后,用ftp的模式导出。
常用crt软件xshell自带ftp,用起来不错,比secureCRT好用。不用再打包下载了。
虚拟机内存视下载量调整,512M死掉概率很高,测试时候使用1G内存,下载进程1600+,再用top模式查看时发现内存使用瞬间降到0.然后逐渐恢复正常。如果在windows同时开启1000+下载进程估计会直接导致系统死机,windows下未尝试
大概1G内存支持到1600左右的下载进程,没有太细究。
IP地址为随意写的。请自行修改为你要下载的地址。
-----------------------------------------------
#暂告一段落:由于双变量混合数字会导致$m0$l 变为一个数字,所以转义0,写为20$m\0$l,测试成功,因测试20$m\0$l目录全为空,删除
实地测试:循环变量不能多嵌套,有几个变量就用几个变量,否则会额外循环N次
执行方法chmod 755 wgetdown.sh ;nohup ./wgetdown.sh & ,后台自动执行

#!/bin/bash
#下载
#author:falconhero
#qq:40594324
PATH=$PATH:$HOME/bin:/usr/local/sbin:/usr/local/bin:/sbin:/usr/sbin:/usr/bin:/root/bin
export PATH
mkdir -p 20{10..12}{10..12}/{1..100}
mkdir -p 20{10..12}0{1..9}/{1..100}

for m in {10..12}
do
for j in {1..65}
do
for i in {1..50}
do
wget https://cache.yisu.com/upload/information/20200311/30/169180.jpg
mv *.jpg 20$m$m/$j/
done
done
done

#删除空目录下的空目录
for n in `find /root/falcon -type d -empty`;
do rmdir $n;
done
#删除空目录
for n in `find /root/falcon -type d -empty`;
do rmdir $n;
done

------------------额外测试--------------------
一些测试
wget http://wvw.Domain Name.com/2010$k/$j/$i.jpg &
#后台全部执行,但是命名会混乱,舍弃(再次测试,发现不会导致命名混乱)
修订:不会造成命名混乱,但是会导致消耗光大量内存。。毕竟相当于无限进程下载。。也就是linux稳定性不错,windows要是开启1000进程下载,早崩溃了。。。

关闭当前窗口后,下载终止解决方法
chmod 755 wgetlist
nohup ./wgetlist &
完美解决。后台慢慢下载去了

原因探索:
上方到后台执行的进程,其父进程还是当前终端shell的进程,而一旦父进程退出,则会发送hangup信号给所有子进程,子进程收到hangup以后也会退出

测试时额外多写了一层循环变量,但调用时候并未使用变量,导致多循环了数次
删除额外变量后,达到预期循环目的
结论:循环语句不能多写无用变量,会严重影响效率,重复执行N遍代码

--------------------搜集资料------------------

后面为转载,注释
http://hankjin.blog.163.com/blog/static/337319372010111492348473/

1. 使用&符号在后台执行命令

你可以在Linux命令或者脚本后面增加&符号,从而使命令或脚本在后台执行,例如:.

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

创新互联基于成都重庆香港及美国等地区分布式IDC机房数据中心构建的电信大带宽,联通大带宽,移动大带宽,多线BGP大带宽租用,是为众多客户提供专业成都天府联通服务器托管报价,主机托管价格性价比高,为金融证券行业服务器托管,ai人工智能服务器托管提供bgp线路100M独享,G口带宽及机柜租用的专业成都idc公司。
分享名称:多级目录批量下载网站图片修订版,及改名方法-创新互联
文章网址:http://myzitong.com/article/gedgj.html