最近使用了个自动化平台(详见 自动化运维平台Spug测试)进行每周的变更,效果很不错,平台将大量重复繁琐的操作通过脚本分发方式标准化自动化了,平台核心是下发到各个服务器的shell脚本,感觉有必要对shell脚本做个总结,所以有了写本专题的想法。本专题将结合运维实际介绍shell脚本的各项用法,预计10篇左右,将包括系统巡检、监控、ftp上传下载、数据库查询、日志清理、时钟同步、定时任务等,里面会涉及shell常用语法、注意事项、调试排错等。
本文是该专题的第六篇。
文章主要介绍如何在批量查找文件、解压文件和重命名文件。
需求:在某路径下有多个目录,每个目录里有多个压缩文件,现需要对文件解压缩和重命名。
主机名 | 操作系统版本 | ip | 备注 |
---|---|---|---|
shell | Suse 11 SP3 | 172.xx.xx.xx | 生产某服务器 |
find ./* -name *XD*
可以看到1倒21目录都有XD开头的文件
for file in $(find ./* -name *XD*);do gunzip $file;done
使用gunzip命令 将所有的压缩文件以循环方式批量解压
脚本:
root@shell:~>more change3.sh
#!/bin/bash
#IFS=$'\n'
for file in `find ./* -name *XD*`
do
newfile=`echo $file | sed 's/210726/210802/g'`
echo $newfile
mv $file $newfile
done
执行批量改名脚本:
将文件名含有210726日期的改成210802
本文的查找、解压和改名脚本都很基础,日常运维会经常使用到。本文只是列举了一个查找XD开头文件的例子,生产中还需要查找其他文件并解压、删除和改名,刚接到这个需求内心是崩溃的,不过shell脚本能很方便的帮我们实现。
平时养成积累各种shell脚本实例的习惯是一件很有意义的事,厚积薄发,后面会有大用。
本文所有脚本和安装包文件已上传github: shell-scripts-05
更多请点击: shell专题