------------------- 蓝色粗体:人名 红色字体:加粗重点(或者作者PS) ---------------------------------- For循环语法: for 语法: for [condition] do command1 command1 commandN done 一、批量下载51cto运维趋势资源
-------------------
蓝色粗体:人名
红色字体:加粗重点(或者作者PS)
----------------------------------
For循环语法:
for 语法: for [ condition ] do command1 command1 commandN done
一、批量下载51cto运维趋势资源
煮酒品茶:无事逛的时候突然发现51运维趋势下载地址如下:
http://os.51cto.com/os/linuxops/pdf/51CTO_linuxops_issue1.pdf一想,构造了个
http://os.51cto.com/os/linuxops/pdf/51CTO_linuxops_issue2.pdf可以下载,于是就有此脚本的前提。
思路:循环后用wget批量下载。
#vim 51ctodown
for((i=1;i<30;i++)) do wget http://os.51cto.com/os/linuxops/pdf/51CTO_linuxops_issue$i.pdf done
#chmod +x 51ctodown
#./51ctodown
二、写脚本批量重命名文件
煮酒品茶:下载后发现文件名并不是我们想要的。故动手操作一下。
思路:文件名呈51CTO*.1.pdf 51CTO*.2.pdf ...方式,这个规律可找。那么我们要改完后的文件名如何来找呢?首先想到的是去官方找找有没有Linux运维趋势的目录,那样就非常简单了。结果悲剧了,最后把找着的文件进行筛选后得到可规律的顺序,然后再用for来重命名,没想到最后整了将近2,3个小时,幸好有dn833以及老男孩的指点才得以继续下去。看过程吧。
访问http://os.51cto.com/art/201011/233915.htm把发布通告给copy到一个文件中。命名为cc.html
以主题来查找标题并导出为cc1.html
#cat cc.html |grep 主题>cc1.html
把年份给去掉
#awk -F"," '{ print $2 $3 }' ~/test/cc1.html>cc2.html
------------------------
[root@localhost test]# cat cc2.html
《趋势》12期主题:服务器故障排除
《趋势》特刊主题:Linux开发
#发现这个没用,册掉。
《趋势》第11期主题:iptables原理与常见应用场景
《趋势》第10期主题:日志分析技巧分享
《趋势》第9期主题:Puppet
《趋势》第8期主题:双机
《趋势》第7期主题:网站迁移
《趋势》第6期主题:备份
《趋势》第5期主题:内网开发环境
《趋势》第4期主题:性能瓶颈
《趋势》第3期主题:运维与开发
《趋势》第2期主题:可用性
《趋势》第1期主题:监控与报警
《趋势》第0期主题:运维自动化 #发现这个没用,册掉。
--------------------------------
把顺序给弄反过来,更符合我们的需求。
# tac cc2.html >cc3.html
---------------------------------
[root@localhost test]# cat cc3.html
《趋势》第1期主题:监控与报警
《趋势》第2期主题:可用性
《趋势》第3期主题:运维与开发
《趋势》第4期主题:性能瓶颈
《趋势》第5期主题:内网开发环境
《趋势》第6期主题:备份
《趋势》第7期主题:网站迁移
《趋势》第8期主题:双机
《趋势》第9期主题:Puppet
《趋势》第10期主题:日志分析技巧分享
《趋势》第11期主题:iptables原理与常见应用场景
《趋势》12期主题:服务器故障排除
-----------------------------------
#vim mvname
for((i=1;i<=13;i++)) do #sed -n $ip 51cton1 #echo $i mv 51CTO_linuxops_issue$i.pdf `sed -n "$i"p cc3.html`.pdf #sed -n "$i"p 51cton1 #mv test 'sed -n '3p' 51cton1' #i=3 #mv test `sed -n 'p' 51cton1` done
-------------------------------
#chmod +x mvname
#./mvname
最终结果:
------------------------------------------------
[root@localhost test]# ls
11 51CTO_linuxops_issue2.pdf a
51cto 51CTO_linuxops_issue3.pdf cc1.html
51cto1 51CTO_linuxops_issue4.pdf cc2.html
51CTO_linuxops_issue10.pdf 51CTO_linuxops_issue5.pdf cc3.html
51CTO_linuxops_issue11.pdf 51CTO_linuxops_issue6.pdf cc.html
51CTO_linuxops_issue12.pdf 51CTO_linuxops_issue7.pdf centos-init
51CTO_linuxops_issue13.pdf 51CTO_linuxops_issue8.pdf mvname
51CTO_linuxops_issue15.pdf 51CTO_linuxops_issue9.pdf wd
51CTO_linuxops_issue15.pdf.1 51cton
51CTO_linuxops_issue1.pdf 51ctoname
[root@localhost test]# ./mvname
[root@localhost test]# ls
11 wd
51cto 《趋势》12期主题:服务器故障排除.pdf
51CTO_linuxops_issue15.pdf 《趋势》第10期主题:日志分析技巧分享.pdf
51CTO_linuxops_issue15.pdf.1 《趋势》第11期主题:iptables原理与常见应用场景.pdf
51cton 《趋势》第1期主题:监控与报警.pdf
51ctoname 《趋势》第2期主题:可用性.pdf
a 《趋势》第3期主题:运维与开发.pdf
cc1.html 《趋势》第4期主题:性能瓶颈.pdf
cc2.html 《趋势》第5期主题:内网开发环境.pdf
cc3.html 《趋势》第6期主题:备份.pdf
cc.html 《趋势》第7期主题:网站迁移.pdf
centos-init 《趋势》第8期主题:双机.pdf
mvname 《趋势》第9期主题:Puppet.pdf
---------------------------------------------------------------
煮酒品茶:好累,在写重命名规则的时候,一直找问题。mv 51CTO_linuxops_issue$i.pdf `sed -n "$i"p
cc3.html`.pdf 这一段弄的我想死的心都有,sed 后变量好像是固定的。-n '$ip' -n "$ip" -n '$i'p 都不行 最后一一排查,得出sed -n "$i"p filename 才完成。才有上面那么多的#...也小小的反思了一下。在有问题的时候百度,以及找前辈们指导是王道。那么后续了?心有点小急,浪费了这么多的时间。一直以为脚本出错,循环出错,就没想到是sed后变量出错。以后排查问题得细心加耐心。另本文只提供思路,实际操作过程很简单,高手勿笑。
更新:dn833的建议非常好啊,越前越好,脚本能简就简。不过得先把目录给定义好才能够下载。适于自动化吧
------------------------------
北京--dn833 15:48:22
其实你wget的时候就能指定输出名的
------------------------------
Wget时就重命名:
for((i=1;i<30;i++)) do wget http://os.51cto.com/os/linuxops/pdf/51CTO_linuxops_issue$i.pdf mv 51CTO_linuxops_issue$i.pdf `sed -n "$i"p cc3.html`.pdf done
看张效果图吧:
参考链接:(老男孩大哥)http://oldboy.blog.51cto.com/2561410/711342/
感谢:
老男孩大哥以及
51CTO.com-linux.dn833的大力指导