天天看点

LInux运维之find命令详解

作者:羊毛与狗

关注我,不迷路,大家好,我是大王。--Linux运维

一、背景说明

对于一个运维人员来说,跟 find 打交道的次数肯定不少,今天来说一说 find 的那些事。

LInux运维之find命令详解

二、find简介

find命令是Linux系统中的强大工具,用于在文件系统中查找和定位文件和目录。它可以通过不同的选项和参数来满足不同的需求,例如按名称查找、按类型查找、按时间查找等。

四、find基本语法

find [path] [expression]           

参数说明:

  • path:要搜索的路径。
  • expression:要执行的操作表达式。是可选参数

expression 中可使用的选项有很多,以下列出最常用的部份:

  • -name :按文件名查找。支持使用通配符 * 和 ?。
  • -type :按文件类型查找。可以是 f(普通文件)、d(目录)、l(符号链接)等。
  • -size :按文件大小查找,支持使用 + 或 - 表示大于或小于指定大小,单位可以是 c、w、b、k、M或 G。
  • -mtime :按修改时间查找,支持使用 + 或 - 表示在指定天数前或后。
  • -exec:执行命令进行操作

时间的额外参数:

  • -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 天前(指定那一天)更改过属性的文件或目录。

四、find实例演示

4.1 按文件名进行查找

注:支持使用通配符 * 和 ?。

## 在 / 目录下面查找具体文件【范围自定义】
find / -name yunjia-yunwei.sh

## 用正则 在 / 目录下面进行模糊查找【范围自定义】
find / -name yunjia-*           
LInux运维之find命令详解

4.2 按文件类型进行查找

  • 注:参数 f(普通文件)、d(目录)、l(符号链接)
# 查找当前目录下的文件
find . -type f

# 查找当前目录下的目录
find . -type d           
LInux运维之find命令详解

4.3 按修改时间进行查找

+ 或 - 表示在指定天数前或后

# 查找当前目录中7天以内修改过的所有文件
find . -mtime -7

# 查找当前目录中7天以前修改过的所有文件
find . -mtime +7           
LInux运维之find命令详解

4.4 按文件大小进行查找

支持使用 + 或 - 表示大于或小于指定大小,单位可以是 c(字节)、w(字数)、b(块数)、k(KB)、M(MB)或 G(GB)。

# 查找当前目录中大小大于1MB的所有文件:
find . -size +1M

# 查找当前目录中大小大于1MB的所有文件:
find . -size -1M           

4.5 执行命令进行操作

对查找出来的内容进行二次操作

# 查找当前目录中名称为 asr_ime.sql 的文件并执行删除命令:
find . -name asr_ime.sql  -exec rm -rf {} \;           
LInux运维之find命令详解

继续阅读