在指定目录下查找文件;
基本结构: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
-
网友评论