说明
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