1 前言

在Linux这个功能丰富的世界里,精通各种命令行工具对于每位系统管理员和开发人员来说都至关重要。

在众多工具中,find 命令以其卓越的功能和灵活性脱颖而出,成为了处理文件系统中文件和目录的得力助手。它不仅能在庞杂的日志文件中迅速定位特定条目,还能高效地清理过期的临时文件,显示出其在日常工作中的不可替代性。

本文将深入剖析 find 命令的各个方面,展示其强大的功能和多样的应用方式。

我们将从基础的文件查找入手,逐渐深入探索更为高级的技巧以及如何巧妙地将 find 命令与其他工具结合,执行更加复杂的文件操作。

无论你是Linux的新手还是资深用户,这篇文章都将为你揭示 find 命令的强大潜力,帮助你更加灵活地应用它于各种日常任务和技术挑战中。

接下来,让我们一起学习吧!!!

2 查找特定文件名

这个命令的作用是在当前目录及其所有子目录中搜索所有名为 "66.png" 的普通文件
find -type f -name "66.png"

-type f-type 是用来指定文件类型的选项,f 表示普通文件

示意图

3 使用通配符搜索

find -type f -name "*.png"

示意图

4 在特定目录中搜索特定大小的文件

find -type f -size +5M

-size +5M

  1. -size 选项用于根据文件大小进行搜索
  2. +5M 表示查找大于5MB的文件
  3. M 代表兆字节(MB),+ 表示大于指定大小

示意图

- 表示小于指定大小
find -type f -size -1M

示意图

5 查找最近修改过的文件

查找在过去7天内修改过的文件
find -type f -mtime -7

6 查找特定时间之前修改的文件

这个命令的作用是在当前目录及其所有子目录中搜索所有在至少15天前最后被修改过的普通文件
find -type f -mtime +15

示意图

7 结合执行动作

7.1 删除找到的文件

删除所有 .tmp 文件
find -type f -name "*.tmp" -exec rm {} \;

-exec rm {} \;

  1. -exec 选项后面跟着的是一个命令,这个命令会对 find 找到的每个文件执行
  2. rm 是用于删除文件的命令
  3. {} 是一个特殊的字符串,对于每个找到的文件,find 命令都会将 {} 替换为该文件的路径
  4. \; 用于结束 -exec 选项指定的命令,反斜杠 \ 用于防止分号被shell作为命令行的终结符处理

7.2 将操作应用于找到的文件

更改所有 .txt 文件的权限
find -type f -name "*.txt" -exec chmod 644 {} \;

-exec chmod 644 {} \;

  1. -exec 选项后面跟着的是一个命令,这个命令会对 find 找到的每个文件执行
  2. chmod 644 是用于更改文件权限的命令,644通常表示文件所有者具有读写权限,而组用户和其他用户只有读权限
  3. {} 是一个特殊的占位符,对于每个找到的文件,find 命令都会将 {} 替换为该文件的路径。
  4. \; 用于结束 -exec 选项指定的命令,反斜杠 \ 用于防止分号被shell作为命令行的终结符处理

8 高级搜索

8.1 使用逻辑运算符

查找扩展名为 .txt.log 的文件
find \( -name "*.txt" -or -name "*.log" \)

示意图

8.2 结合 grep 搜索文件内容

在所有 .sh 文件中搜索 "当前时间"
find -type f -name "*.sh" -exec grep "当前时间" {} \;

示意图

在这篇文章中,我们一起深入了解了Linux中的 find 命令,探索了它的强大搜索能力以及在各种场景下的应用。从基础的文件查找到基于复杂条件的高级搜索,再到与其他命令的结合使用,find 命令展现了其在文件管理和处理中不可或缺的角色。