Linux find 查找文件

说明

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


原文出处:/show_1GW95XdkD2l.html