1、SHELL编程Find语句案例实战
1)SHELL编程四剑客工具:Find、Grep、Sed、Awk,通过四剑客可以完成常规Linux指令无法完成或者比较复杂的功能,学好SHELL编程四剑客有助于SHELL编程能力再上一层楼。
2)SHELL编程四剑客之一的Find工具,主要是用于Linux操作系统去查找某个文件和目录所在的位置的(绝对路径),Find工具的语法格式:
find(工具) path(路径) -option(参数) -action(动作); find path -option [ -print ] [ -exec -ok command ]
Path路径:给定find工具一个大概的范围,从哪个范围去查找;
Option参数:按照某些特征:-name、-size、-mtime、-user;
Action动作:找到文件或者目录之后执行的操作的动作(打印、执行);
3)SHELL编程四剑客Find工具案例操作一,基于Find工具查找Linux系统下eth0网卡配置文件所在的路径。
find / -name eth0 find / -name ifcfg-eth0 find / -name "*eth0" find /etc/ -name "*eth0" find /etc/sysconfig/network-scripts/ -name "*eth0"
4)SHELL编程四剑客Find工具案例操作二,基于Find工具查找Linux系统下auto_mysql_backup.sh所在的路径。
find / -name auto_mysql_backup.sh find / -name *mysql_backup*.sh
5)SHELL编程四剑客Find工具案例操作三,基于Find工具查找Linux系统下以.rpm结尾的软件包,并且找到以mariadb命名开头的包,排除mariadb-libs包。
find / -name "*.rpm" find / -name "mariadb*rpm" find / -name "*.rpm" -a -name "mariadb*" find / -name "*.rpm" -name "mariadb*" ! -name "mariadb-libs*" find / -name "*.rpm" -a -name "mariadb*" -a ! -name "mariadb-libs*
6)SHELL编程四剑客Find工具案例操作四,基于Find工具查找Linux系统下以.rpm结尾的软件包,并且找到以mariadb命名开头的包,排除mariadb-libs包,并且将剩余软件包拷贝至/tmp/目录。
for soft in `find / -name "*.rpm" -name "mariadb*" ! -name "mariadb-libs*"`;do cp $soft /tmp/;done cp `find / -name "*.rpm" -name "mariadb*" ! -name "mariadb-libs*"` /tmp/ cp $(find / -name "*.rpm" -name "mariadb*" ! -name "mariadb-libs*") /tmp/ find / -name "*.rpm" -name "mariadb*" ! -name "mariadb-libs*" -exec cp {} /tmp/ ; find / -name "*.rpm" -name "mariadb*" ! -name "mariadb-libs*"|xargs -I {}cp {} /tmp/
7)SHELL编程四剑客Find工具案例操作五,查找/data/logs/目录大于10M并且小于30M的文件,以.log结尾,并且日志文件是3天以前的,并且将其移动至/data/backup/目录下。
find /data/logs/ -size +10M -size -30M -type f -mtime +3 -name “*.log”-exec mv {} /data/backup/ ;
8)SHELL编程四剑客Find工具案例操作六,查找当前目录,第一级目录深度的目录,排除隐藏文件,并且命名以a开头的,命令如下:
find . -maxdepth 1 -type d ! -name ".*" -name "a*"
2、SHELL编程Sed语句案例实战
1)SHELL编程四剑客之二的Sed工具,主要是用于Linux系统文本文件的编辑、打印的,也称为非交互模式编辑器(vi|vim交互模式编辑器),Sed工具的语法格式:
sed -option(参数) ‘Command’(命令) file(文件对象)
Option参数:-i(修改)、-n(静默模式)、-e(扩展)、-l、-b、-c;
Command命令:p(打印)、d(删除)、N(多行)、G、D;
2)SHELL编程四剑客Sed工具案例操作一,基于Sed工具将list.txt文件中的用户名root改为jfedu,命令如下:
sed s/jfedu/root/g list.txt sed 's#jfedu#root#g' list.txt sed -i 's#jfedu#root#g' list.txt sed -e '3s/2/100/g' -e '4s/3/100/g' list.txt sed '3s/2/100/g;4s/3/100/g' list.txt sed '3,$s/11/100/g' list.txt