主题
Linux 中的 find 命令详解
在Linux系统管理与日常使用中,find 命令是一个极其强大且常用的工具,用于在文件系统中搜索符合条件的文件。通过灵活运用find,用户可以基于文件名、大小、修改时间、所有权等多种条件进行精确查找。本文档旨在详细介绍find命令的基本用法、高级选项及实战示例,帮助用户高效地管理和检索文件。
基础语法
bash
find [搜索路径] [表达式]1
搜索路径:指定
find命令开始搜索的位置,默认为当前目录.。表达式:由多个测试条件和操作符组成的规则,用于筛选目标文件。
常用选项与表达式
按名称查找
查找名为
example.txt的文件(包括子文件夹):bashfind . -name "example.txt" #例如 find / -name "passwd"1
2只在当前路径下(不包括子文件夹)查找
bashfind . -maxdepth 1 -name "example.txt" #例如 find /sys/fs/selinux/class -maxdepth 1 -name "passwd" #例如 find /etc -maxdepth 2 -name "passwd" #例如 find /etc -maxdepth 1 -name "passwd"1
2
3
4使用通配符查找,例如查找所有
.txt文件:bashfind . -name "*.txt" #例如 find / -name "bashr*"1
2匹配模式查找(忽略大小写):
bash
find . -iname "Example.Txt"
#例如 find / -iname "BASHR*"1
2
2
按时间属性查找
UNIX/Linux文件系统每个文件都有三种时间戳:
访问时间 (-atime/天,-amin/分钟):用户最近一次访问时间。
修改时间 (-mtime/天,-mmin/分钟):文件最后一次修改时间。
变化时间 (-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。
查找过去24小时内被修改过的文件:
bashfind . -mmin -60 #先创建一个制定时间的文件 touch -d "2023-04-01 15:30:00" myfile.txt1
2查找超过7天未被访问的文件:
bash
find . -atime +71
按大小查找
文件大小单元:
b —— 块(512字节)
c —— 字节
w —— 字(2字节)
k —— 千字节
M —— 兆字节
G —— 吉字节
查找大于100MB的文件:
bashfind . -size +100M1查找小于5KB的文件:
bash
find . -size -5k1
按类型查找
类型参数列表:
f 普通文件
l 符号连接 link
d 目录
c 字符设备
b 块设备
s 套接字
p Fifo
查找所有目录:
bashfind . -type d1查找普通文件:
bash
find . -type f1
执行动作*
删除匹配到的文件(谨慎使用!):
bashfind . -name "*.tmp" -delete1对找到的文件执行命令,例如打印文件内容:
bashfind . -name "*.txt" -exec cat {} \;1或者,更简洁的
-print0与xargs组合,用于处理包含空格的文件名:
bash
find . -name "*.txt" -print0 | xargs -0 ls -l1
查找文件内容里包括hello的文件
bash
find /home -type f -exec grep -l "hello" {} +1