在指定目录下查找文件;
基本结构:find [paths] [expressions] [actions]
paths: 接受一个或多个路径作为搜索范围,并在该路径下递归搜索;
expression: 搜索条件,主要有以下几种条件:
- 按文件名搜索:
-
-name:区分大小写,-iname:不区分大小写; -
?:表示任何一个单一的符号; -
*: 表示任意数量(包括0)的位置符号; -
find /usr -name '*.txt': 查找/usr目录下所有文件名以.txt结尾的文件; -
find /usr -name '????': 查找/usr目录下所有文件名刚好为4个字符的文件; - 有时候需要匹配完整的路径,可以使用
-path或-ipath选项; -
find /usr -path '*/src/*.txt'查找/usr下所有文件名以.txt结尾的文件或目录,且该文件的父目录必须是src;
-
- 根据文件类型:
- 如果只想搜索得到文件或目录,即不想它们同时出现在结果中,可以使用
-type选项指定文件类型。 -
-type选项最常用的参数如下:-
f: 文件 -
d: 目录 -
l: 符号链接
-
-
find /usr -type d -name 'python*'检索/usr下所有文件名以python开头的目录;
- 如果只想搜索得到文件或目录,即不想它们同时出现在结果中,可以使用
- 检索空文件:
-
find命令支持-empty选项用来检索为空的文件或目录。空文件即文件里没有任何内容,空目录即目录中没有任何文件或子目录。 -
find ~ -type d -empty检索用户主目录下所有的空目录
-
- 反义匹配:
- 检索 /usr 下所有文件名不以
.txt为后缀的文件:find /usr -type f ! -name '*.txt' - 检索 /usr 下所有内容不为空的文件:
find /usr -type f ! -empty
- 检索 /usr 下所有文件名不以
- 根据文件的所属权检索:
- 为了检索归属于特定用户的文件或目录,可以使用
-user选项。-group选项则可以根据文件或目录的属组进行检索。 -
find / -type f -user starky检索根目录下所有属主为 starky 的文件。
- 为了检索归属于特定用户的文件或目录,可以使用
- 根据时间日期进行检索:
- 有时候,需要根据文件创建或修改的时间进行检索。
- Linux 系统中,与文件相关联的时间参数有以下三种:
- 修改时间(Modification time):最后一次文件内容有过更改的时间点;
- 访问时间(Access time):最后一次文件有被读取过的时间点;
- 变更时间(Change time):最后一次文件有被变更过的时间点(如内容被修改,或权限等 metadata 被修改);
- 与此对应的是 find 命令中的
-mtime,-atime和-ctime三个选项。这三个选项的使用规则:-
-mtime 2:该文件 2 天前被修改过; -
-mtime -2:该文件 2 天以内被修改过; -
-mtime +2:该文件距离上次修改已经超过 2 天时间;
-
-
find /usr -type f -mtime 2检索 /usr 下两天前被修改过的文件。 - 如果觉得
-mtime等选项以天为单位时间有点长,还可以使用-mmin,-amin,-cmin。 -
find /usr -type f -mtime +50 -mtime -100检索 /usr 下 50 到 100 天之前修改过的文件。 -
find /usr -type f -mtime 2 -amin 5检索 /usr 下两天前被修改过且 5 分钟前又读取过的文件。
- 根据文件大小检索:
-
-size选项允许用户通过文件大小进行搜索(只适用于文件,目录没有大小) - 表示文件大小的单位由以下字符组成:
-
c:字节 -
k:Kb -
M:Mb -
G:Gb
-
- 另外,还可以使用
+或-符号表示大于或小于当前条件。 -
find / -size +1G检索文件大小高于 1 GB 的文件。
-
- 根据文件权限检索:
- find 命令可以使用
-perm选项以文件权限为依据进行搜索。
- find 命令可以使用
- 对搜索结果执行命令:
-
-delete选项可以用来删除搜索到的文件和目录 - 如删除 home 目录下所有的空目录:
find ~ -type d -empty -delete
-