Linux find 精讲与实战

栏目: Linux 发布时间:2022-02-09

目标

本文的目标是帮你轻松读懂下面这条 shell 语句,并能够熟练 find 命令查找文件。

$ find /home/tides/logs -mtime +7 -exec rm {} \;

find 语法

首先,你需要先了解一下 find 的基本语法

find   path   -option [ -print ] [ -exec   -ok   command ]   {} \;

参数说明:

1)path:要查找的目录路径

2)exec:对匹配的文件执行该参数所给出的 shell 命令 形式为 command {} ;,注意{}与 ; 之间有空格 ”{}“为占位符,“;“用来结束命令(command 命令可以接收多个参数,不知道要在哪里结束,所以需要指定结束位置)

3)ok:与exec作用相同, 区别在于,在执行命令之前,都会给出提示,让用户确认是否执行

-mindepth 最小目录层级

-maxdepth 最大目录层级

-atime n : 在过去 n 天内被读取过的文件

-mtime n : 在过去 n 天内被修改过的文件

-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写

-size n : n 替换问文件大小,常用k、M、G等。

-type c : 文件类型是 c (d: 目录,f: 一般文件)的文件。

详解

1、"find /home/tides/logs -mtime +7" 的意思是:在 /home/tides/logs 目录下查找最后修改日期超过 7 天的(日志)文件

2、-exec 后面是要对查找到的文件执行的命令(即 rm 删除操作)

3、"{}" 是占位符,"find /home/tides/logs -mtime +7" 查找到的文件会被填补到这个位置

4、";" 是 -exec 的结束标识

化错误为真知

$ find /home/tides/logs -mtime +7 -exec rm {}
find: -exec: no terminating ";" or "+"

从上面的报错信息,我们可以知道需要为 -exec 指定结束标识 ";" 或 "+"

延伸与实战

查找文件 size 介于 2500k - 4000k 之间的文件

$ find ./ -size +2500k -size -4000k -exec ls -lh {} \;
-rw-r--r-- 1 styd develop 3.8M Dec 28 18:10 ./master-stdout.log.20211228.181040
-rw-r--r-- 1 styd develop 3.0M Jan  4 11:20 ./master-stdout.log.20220104.112032

小结

1、find 命令主要用于查找文件

2、“{}” 是占位符

3、“;” 是一个结束标识,还可以使用 “';'”、“+” 和 “'+'” 代替

4、注意 -size 单位是区分大小写的,k、M、G

本文地址:https://www.tides.cn/p_linux-find-demo

标签: 文件查找 find mtime