find 含义: 顾名思义,是从来查找满足条件的内容。 从指定目录,递归的查找满足条件的内容。
格式: find [查询目录] [参数] [匹配方式]
- 文件操作:
-name : 查找文件名 ( find . -name "*.txt" ) -- 查询当前目录及子目录下,已txt结尾的文件
-type : 查找文件的类型
f :普通文件,如txt,sh等 ( find . -type f ) -- 查询当前目录及子目录下,普通文件
d :目录
b :块设备文件
c :字符设备文件
p :管道文件
l :链接文件
2. 用户权限
-perm :用户权限permission,常用3位数据(4:read,2:write,1:execute),如744(读写执行,读,读),创建人拥有所有权限,创建人所属的组有读权限,其他人有读权限
-user / -nouser :按文件属主查询 / 查找无有效属主的文件
-group / -nogroup :按文件属组查询 / 查找无有效属组的文件
3. 时间选项
-atime / -amin N :最近访问过的文件(access),time单位是天(day), min单位是分钟(min). 若数字前"+",表示N段时间前(-atime +1 表示一天之前);若数字前"-",表示N段时间内(-atime 11 表示最近一天之内)
-ctime / -cmin N :最近状态改变过的文件(change),一般值权限修改,chmod,chgrp等
-mtime / -mmin N :最近修改过的文件(modify),指文件内容修改
通过命令: stat file ,可以查看详情 ,如: stat kimbo_test.sh
4. 路径
-path 给出文件路径,可在路径中查询
-prune 表示要忽略的目录
xargs :与管道连用,对匹配的文件执行后续操作。每次只获取一部分文件,先处理,然后在下一批,以此下去。
#!/bin/bash # 查询文件名是txt的文件,并显示 find /home/test/ -name "*.txt" |xargs ls -l # 查询文件名是txt的文件,并删除 find /home/test/ -name "*.txt" |xargs rm -fr
例1: 查找最近修改的文件
find . -name "*.sh" -mtime -1 #time 单位是天,最近一天更新的文件 find . -name "*.sh" -mmin -60 |xargs ls -l #min单位是分钟,最近1小时更新的文件