shell脚本之find
实时查找工具,通过遍历指定路径下的文件系统完成文件查找。
find命令的工作方式如下:沿着文件层次结构向下遍历,匹配符合条件的文件,执行响应的操作。
语法:find [options]… [查找条件][处理动作]
查找路径:指定具体的目标路径,默认为当前目录。
查找条件:指定的查找标准,可以是文件名、大小、类型、权限等,默认为找出指定路径下的所有文件。
根据文件名查找
-name “文件名称”:支持通配符查找;
-iname “文件名称”:不区分文件名大小写;
#匹配/home/dou目录下所有以.txt为结尾的文件
find /home/dou -name "*.txt" -print
根据属主、属组查找
-user username:查找属主为指定用户的文件;
-group groupname:查找属组为指定用户的文件;
-uid userid:查找属主为指定uid号的文件;
-gid groupid:查找属组为指定gid号的文件;
-nouser:查找没有属主的文件;
-nogroup:查找没有属组的文件;
#打印出当前目录下doudou拥有的所有文件
find . -type f -user doudou -print
根据文件类型查找
-type type
f:普通文件;
d:目录文件;
l:符号链接文件;
s:套接字文件;
b:块设备文件;
c:字符设备文件;
p:管道文件;
#匹配当前目录下所有的目录文件
find . -type d -print
组合条件
与:-a
或:-o
非:-not,!
#匹配包含这两种文件类型的文件
find . \(-name "*.txt" -o "*.pdf"\) -print
根据文件大小进行查找
-size [ ,-]num单位,常用单位有:k、m、g
num单位:显示的是大于num-1,小于等于num这个区间内的值;
-num单位:显示的是大于等于0,小于等于num-1区间内的值;
num单位:大于num至无穷大区间内的所有值;
#匹配当前目录下大于2k的文件
find . -type f -size 2k
根据文件时间进行查找
访问时间(-atime):用户最近一次访问文件的时间;
修改时间(-mtime):文件内容最后一次被修改的时间;
变换时间(-ctime):文件元数据(例如权限和所有权)最后一次改变的时间
#匹配打印最近7天内别访问的所有文件
find . -type f -atime -7 -print
-amin:访问时间-分钟
-mmin:修改时间-分钟
-cmin:变化时间-分钟
#打印出访问时间超过7分钟的所有文件
find . -type -amin 7 -print
根据目录的深度进行查找
-mindepth,-maxdepth选项来限制find命令遍历的目录深度
#列出当前目录下的所有以f开头的文件,即使有子目录,也不会被打印和遍历
find . -maxdepth 1 -name "f*" -print
处理动作
-print:默认处理动作,显示至屏幕;
-ls:类似于对查找到的文件执行"ls -l"命令;
-delete:删除查找到的文件
-fls /path/to/somefile:查找到的所有文件的长格式信息保存至指定文件中