通过如上基础语法的学习,读者对Shell编程有了更近一步的理解,Shell编程不再是简单命令的堆积,而是演变成了各种特殊的语句、各种语法、编程工具、各种命令的集合。

在Shell编程工具中,四剑客工具的使用更加的广泛,Shell编程四剑客包括:find、sed、grep、awk,熟练掌握四剑客会对Shell编程能力极大的提升。

四剑客之Find工具实战,Find工具主要用于操作系统文件、目录的查找,其语法参数格式为:

find   path   -option   [   -print ]   [ -exec   -ok   command ]   { }  \;

其option常用参数详解如下:

选项

参数

含义

-name

filename

查找名为filename的文件;

-type

b/d/c/p/l/f

查是块设备、目录、字符设备、管道、符号链接、普通文件;

-size

n[c]

查长度为n块[或n字节]的文件;

-perm

按执行权限来查找;

-user

username

按文件属主来查找;

-group

groupname

按组来查找;

-mtime

-n +n

按文件更改时间来查找文件,-n指n天以内,+n指n天以前;

-atime

-n +n

按文件访问时间来查找文件;

-ctime

-n +n

按文件创建时间来查找文件;

-mmin

-n +n

按文件更改时间来查找文件,-n指n分钟以内,+n指n分钟以前;

-amin

-n +n

按文件访问时间来查找文件;

-cmin

-n +n

按文件创建时间来查找文件;

-maxdepth

查找目录级别深度。

(1) Find工具-name参数案列:
​
find  /data/   -name  "*.txt"         #  查找/data/目录以.txt结尾的文件;
find  /data/   -name  "[A-Z]*"        #  查找/data/目录以大写字母开头的文件;
find  /data/   -name  "test*"         #  查找/data/目录以test开头的文件;
​
(2)Find工具-type参数案列:
​
find   /data/    -type d                #  查找/data/目录下的文件夹;
find   /data/    !   -type   d          #  查找/data/目录下的非文件夹;
find   /data/    -type  l               #  查找/data/目录下的链接文件。
find  /data/ -type d|xargs chmod 755 -R     #  查目录类型并将权限设置为755;
find  /data/ -type f|xargs chmod 644 -R     #  查文件类型并将权限设置为644;
​
(3)Find工具-size参数案列:
​
find   /data/    -size   +1M                #  查文件大小大于1M的文件;
find   /data/    -size   10M                #  查文件大小为10M的文件;
find   /data/    -size   -1M                #  查文件大小小于1M的文件;
​

find 工具参数综合案例

#  查找/data目录以.log结尾,文件大于10k的文件,同时cp到/tmp目录;

find /data/  -name "*.log"  -type f  -size +10k -exec cp {} /tmp/ \;

#  查找/data目录以.txt结尾,文件大于10k的文件,权限为644并删除该文件;

find /data/ -name "*.log"  –type f  -size +10k  -perm 644 -exec rm –rf {} \;

#  查找/data目录以.log结尾,30天以前的文件,大小大于10M并移动到/tmp目录;

find /data/ -name "*.log"  –type f  -mtime +30 –size +10M -exec mv {} /tmp/ \;