概述
在 Linux 环境下快速查找并处理所需文件,是服务器管理与开发的基本功和必备技能。本文将通过实际操作,从 find 命令的基本查找选项开始,逐步介绍基于文件大小、修改时间的查找,以及对查找结果进行批量操作(-exec)的方法。
实验环境搭建与基于文件名的基础查找
为了进行 find 命令实操,运行 mkdir -p ~/find_lab/docs ~/find_lab/logs ~/find_lab/backup && cd ~/find_lab 命令来创建专用目录并切换到该目录下。

运行 touch docs/app.log docs/guide.txt logs/error.log logs/access.log backup/data.bak 命令,创建用于测试查找的不同扩展名的示例文件。

find 命令会根据指定条件递归查找指定目录路径下的所有文件和目录。
运行 find . -name "*.log" 命令,将以当前目录(.)为基准查找所有以 .log 结尾的文件,并输出其路径。
此时,为了防止通配符(*)被 Shell 提前展开,查找模式需用双引号包裹。
⚙️ [常用选项]
-name : 区分大小写,查找与指定文件名或模式匹配的项。-iname : 忽略大小写,查找与指定文件名或模式匹配的项。-type : 指定要查找的文件类型(f 为普通文件,d 为目录)。-size : 根据文件大小进行查找(+ 表示大于,- 表示小于)。-mtime : 根据文件内容修改的时间(以天为单位)进行查找。-empty : 查找内容为空的空文件或空目录。-exec : 对查找出的每个文件批量执行指定的 Linux 命令。-delete : 立即删除符合查找条件的文件。

为了在不区分大小写的情况下查找文件名,使用 -iname 选项运行 find . -iname "GUIDE.TXT" 命令。
即使实际文件名是小写的 guide.txt,也能匹配大写查找条件并正常检索出文件路径。

按文件类型和大小条件查找大文件
为了测试按文件大小条件查找,运行 truncate -s 15M ~/find_lab/backup/large_archive.iso 命令创建一个大小为 15MB 的大文件示例。

为了进一步进行大小对比测试,运行 truncate -s 2M ~/find_lab/logs/big_trace.log 命令创建一个大小为 2MB 的日志示例文件。

为了排除普通文件仅筛选目录路径进行查找,应用 -type d 选项并运行 find ~/find_lab -type d 命令。
终端将清晰地仅输出指定路径下存在的所有目录列表。

为了查找普通文件(-type f)中大于 10MB 的大文件(-size +10M)并同时确认详细信息,运行 find ~/find_lab -type f -size +10M -exec ls -lh {} + 命令。
符合条件的 15MB 大小的 large_archive.iso 文件被检索出来,并附带详细权限及容量信息一起输出。

基于时间条件 (mtime/mmin) 查找修改过的文件
为了进行随时间推移的文件查找实操,运行 touch -d "2 days ago" ~/find_lab/backup/old_backup.tar 命令创建一个修改时间为两天前的历史示例文件。

为了测试查找近期修改的最新文件,运行 touch ~/find_lab/logs/recent.log 命令创建一个具有当前时间戳的示例文件。

为了查找最近 24 小时内修改过的普通文件,应用 -mtime -1 选项并运行 find ~/find_lab -type f -mtime -1 命令。
在基准时间(24 小时)内创建或修改的所有文件列表均正常输出。

为了查找修改时间超过 24 小时(1 天)的旧文件,应用 -mtime +1 选项并运行 find ~/find_lab -type f -mtime +1 命令。
仅准确筛选并输出了之前以两天前日期创建的 old_backup.tar 文件。

查找结果批量处理:-exec 选项与删除操作
为了进行批量控制及权限修改实操,运行 mkdir -p ~/find_lab/temp && touch ~/find_lab/temp/cache1.tmp ~/find_lab/temp/cache2.tmp 命令创建临时目录及临时示例文件。

为了将检索到的所有 .tmp 扩展名文件的访问权限批量修改为 644,应用 -exec 选项并运行 find ~/find_lab/temp -name "*.tmp" -exec chmod 644 {} \; 命令。{} 符号会被替换为查找到的各个文件的路径,\; 则表示传递给 -exec 语句的命令结束。

为了确认权限修改是否正常生效,运行 ls -l ~/find_lab/temp 命令。
从输出结果中可以确认,两个临时文件均已被修改为读写权限(-rw-r--r--,644)。

为了批量删除符合条件的 .tmp 文件,结合 rm -f 命令运行 find ~/find_lab/temp -name "*.tmp" -exec rm -f {} \; 命令。
无需额外的确认步骤,检索到的目标文件将被一次性删除。

为了最终确认临时文件是否已全部成功删除,运行 ls -la ~/find_lab/temp 命令。
结果显示仅剩下当前目录(.)和上级目录(..),之前创建的临时文件已被彻底清除。

以上简要整理了 Linux find 命令的核心查找选项以及能在实际工作中直接应用的批量处理技巧。
建议根据不同场景灵活组合这些选项,让文件检索与管理工作变得更加高效。