Linux find 查找文件 作者:马育民 • 2024-12-02 08:52 • 阅读:10009 # 说明 Linux find 命令用于在指定目录下查找文件和目录。 类似 windows 的文件查找,可根据 **文件名模糊搜索**、根据修改日期、文件大小等进行搜索 **注意:**区分大小写 ### 语法 ``` find [路径] [匹配条件] [动作] ``` ##### 参数说明 : - 路径: 是要查找的目录路径,可以是一个目录或文件名,也可以是多个路径,多个路径之间用空格分隔,如果未指定路径,则默认为当前目录。 - 匹配条件: 是可选参数,用于指定查找的条件,可以是文件名、文件类型、文件大小等等。详见下面 - 动作: 可选的,用于对匹配到的文件执行操作,比如删除、复制等。 # 匹配条件 中可使用的选项有二三十个之多,以下列出最常用的部份: - `-type type`:按文件类型查找,可以是 f(普通文件)、d(目录)、l(符号链接)等。 - `-user username`:按文件所有者查找。 - `-group groupname`:按文件所属组查找。 # 文件名模糊搜索 `-name pattern`:按文件名查找,支持使用通配符 * 和 ?。 ### 例子 搜索到开头是 `作业`,后面是任意字符的文件: ``` find -name "作业*" ``` # 根据文件大小搜索 `-size [+-]`size[cwbkMG]:按文件大小查找,支持使用 + 或 - 表示大于或小于指定大小,单位可以是 c(字节)、w(字数)、b(块数)、k(KB)、M(MB)或 G(GB)。 ### 应用场景 搜索大文件,便于清理,节省空间 搜索大小是0的文件,清理这些无用的文件 ### 搜索文件大小是0的文件 ``` find -size 0 ``` ### 搜索大文件 如搜索超过1G的文件(这里没有,演示大于 1kb) ``` find -size +1k ``` # 根据修改时间进行搜索 按修改时间查找,支持使用 + 或 - 表示在指定天数前或后,days 是一个整数表示天数。 ``` -mtime days ``` ### 应用场景 修改的文件过多,想不起来文件名,此时就只能根据修改时间进行搜索 ### 搜索当天修改的文件 ``` find -mtime -1 ``` ### 搜索修改时间小于3天的文件 ``` find -mtime -3 ``` ### 搜索修改时间大于3天的文件 ``` find -mtime +3 ``` ## 用于时间的参数如下: - `-amin n`:查找在 n 分钟内被访问过的文件。 - `-atime n`:查找在 `n*24` 小时内被访问过的文件。 - `-cmin n`:查找在 n 分钟内状态发生变化的文件(例如权限)。 - `-ctime n`:查找在 `n*24` 小时内状态发生变化的文件(例如权限)。 - `-mmin n`:查找在 n 分钟内被修改过的文件。 - `-mtime n`:查找在 `n*24` 小时内被修改过的文件。 在这些参数中,n 可以是一个正数、负数或零。正数表示在指定的时间内修改或访问过的文件,负数表示在指定的时间之前修改或访问过的文件,零表示在当前时间点上修改或访问过的文件。 正数应该表示时间之前,负数表示时间之内。 #### 例子 -mtime 0 表示查找今天修改过的文件,-mtime -7 表示查找一周以前修改过的文件。 关于时间 n 参数的说明: +n:查找比 n 天前更早的文件或目录。 -n:查找在 n 天内更改过属性的文件或目录。 n:查找在 n 天前(指定那一天)更改过属性的文件或目录。 # 搜索文件后并执行动作 ### 应用场景 搜索大文件、无用的文件(大小是0的),并直接删除掉 ``` find -size 0 -exec rm {} \; ``` ##### 解释 - `-exec`: 选项允许你执行一个命令 - `{}`: 将会被匹配到的文件名替代 - `\;`:表示命令结束,**结尾必须有 `\;`** 参考: https://www.runoob.com/linux/linux-comm-find.html 原文出处:http://malaoshi.top/show_1GW95XdkD2l.html