Shell 编程四剑客之 Find


通过如上基础语法的学习,读者对 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#按文件创建时间来查找文件;
-nogroup#查无有效属组的文件;
-nouser#查无有效属主的文件;
-newer f1 !f2#找文件,-n 指 n 天以内,+n 指 n 天以前;
-depth#使查找在进入子目录前先行查找完本目录;
-fstype#查更改时间比 f1 新但比 f2 旧的文件;
-mount#查文件时不跨越文件系统 mount 点;
-follow#如果遇到符号链接文件,就跟踪链接所指的文件;
-cpio#查位于某一类型文件系统中的文件;
-prune#忽略某个目录;
-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 #查文件大小大于 1Mb 的文件;
find /data/ -size 10M #查文件大小为 10M 的文件;
find /data/ -size -1M #查文件大小小于 1Mb 的文件;

(4) Find 工具-perm 参数案列:

find /data/ -perm 755 #查找/data/目录权限为755的文件或者目录;
find /data/ -perm -007 #与-perm 777 相同,表示所有权限;
find /data/ -perm +644 #文件权限符号 644 以上;

(5) Find 工具-mtime 参数案列:

atime,access time 文件被读取或者执行的时间;
ctime,change time 文件状态改变时间;
mtime,modify time 文件内容被修改的时间;
find /data/ -mtime +30 -name "*.log" #查找 30 天以前的 log 文件;
find /data/ -mtime -30 -name "*.txt" #查找 30 天以内的 log 文件;
find /data/ -mtime 30 -name "*.txt" #查找第 30 天的 log 文件;
find /data/ -mmin +30 -name "*.log" #查找 30 分钟以前修改的 log 文件;
find /data/ -amin -30 -name "*.txt" #查找 30 分钟以内被访问的 log 文
find /data/ -cmin 30 -name "*.txt" #查找第 30 分钟改变的 log 文件。

(6) 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 -m perm 644 -exec rm –rf {} \;
#查找/data 目录以.log 结尾,30 天以前的文件,大小大于 10M 并移动到/tmp 目录;
find /data/ -name "*.log" –type f -mtime +30 –size +10M -exec mv {} /tmp/ \;
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值