1、通过文件名查找目标文件 -name/-iname --iname会忽略大小写,-name为精确匹配
find dir -name expression
文件名支持正则表达式
example: find ./ -name "*.txt" --查找当前目录下以txt结尾的文件
2、通过文件大小查找目标文件 -size
find dir -size expression
大小单位:
c--字节, b--块(512字节), w--字(2字节), k--千字节(1024字节),M--兆字节(1024k), G--吉字节(1024M)
expression: +5k --大于5k的文件,-5k小于5k的文件,用法类似
example: find ./ -size +1M --查找当前目录下大于1M的文件
3、通过类型来查找文件 -type
find dir -type expression
expression:
d--设备,
f--普通文件,
l--链接,
c--字符设备,
b--块设备,
s--套接字,
p--fifo(有名管道、队列)
example:
find ~/ -type f --查找当前用户目录下的普通文件
4、根据文件时间戳来查找
linux下时间戳(timestamp): 描述每个文件状态变化的时间节点,每个文件都有三种时间戳
访问时间(access): -atime(天), amin(分钟)
修改时间(modify):-mtime(天),tmin(分钟)
变化时间(change):-ctime(天),cmin(分钟) 文件元数据最后一次更改时间
注:文件的数据分为两类:一类为数据,即文件的实际内容;另一类为元数据,用来描述文件的特征。
一般包括文件名,链接次数,文件类型,所述用户/组id,文件大小和所在数据库等, 可以用 stat filename 来查看文件元数据 的信息
example:
find ~/ -atime +3 --查找用户目录下三天前访问的文件
find ~/ -atime -3 --查找用户目录下三天内访问的文件
find ~/ -mtime +3 -type f --查找用户目录下三天前修改的文件
find ~/ -mtime -3 -type f --查找用户目录下三天内修改的文件
5、根据文件权限,所述用户/组来进行搜索
find ~/ -perm 766 --查找用户目录下权限为766的文件
find ~/ ! -perm 766 --查找用户目录下权限不是766的文件(注意!后面的空格)
find / -user andy --查找所属用户为andy的文件
find / -group adm --查找属组为adm的文件
6、使用-exec配合其他命令使用
find ~/ -name "*.txt" -exec rm {} \; --删除查找到的文件,注意分号和‘{}’和‘\’之间的空格
find ~/ -name "*.txt" -ok rm {} \; --删除查找到的文件,注意分号, ok--相比exec会给出提示
find命令的输出格式为列表形式,可以通过xargs调整为行模式
find ~/ -name "*.txt" | xargs -rm --删除查找到的文件
find ~/ -name "*.txt" -type f -exec cat {} > c.txt \; --拼接输出到c.txt
find ~/ -name "*.txt" -type f -exec cat {} \; > c.txt --拼接输出到c.txt
如何在-exec后执行多条命令: 编写shell脚本,myjob.sh
` find ~/ -name "*.txt" -exec myjob.sh {} \;
7、过滤搜索目录
find ~/ -path "/tmp" -prune -o -name "*.txt" 查找用户目录下除了tmp目录下的txt文件
find ./ -empty 查找空文件