插件窝 干货文章 Linux 的find命令怎么用

Linux 的find命令怎么用

查找 文件 find bash 215    来源:    2025-04-11

Linux find 命令使用指南

find 是 Linux 系统中最强大且常用的文件查找命令之一,它可以根据各种条件(如文件名、类型、大小、修改时间等)在目录树中查找文件。

基本语法

find [路径] [选项] [操作]

如果不指定路径,默认从当前目录开始搜索。

常用选项和示例

1. 按文件名查找

# 查找当前目录下名为 file.txt 的文件
find . -name "file.txt"

# 查找 /home 目录下所有 .jpg 文件
find /home -name "*.jpg"

# 不区分大小写查找
find . -iname "file.txt"

2. 按文件类型查找

# 查找所有目录
find . -type d

# 查找所有普通文件
find . -type f

# 查找所有符号链接
find . -type l

3. 按文件大小查找

# 查找大于 10MB 的文件
find . -size +10M

# 查找小于 1KB 的文件
find . -size -1k

# 查找大小在 1MB 到 10MB 之间的文件
find . -size +1M -size -10M

4. 按时间查找

# 查找 7 天内修改过的文件
find . -mtime -7

# 查找 30 天前访问过的文件
find . -atime +30

# 查找 24 小时内状态改变的文件
find . -ctime -1

5. 按权限查找

# 查找权限为 644 的文件
find . -perm 644

# 查找可执行文件
find . -perm /u=x,g=x,o=x

6. 按用户/组查找

# 查找属于用户 bob 的文件
find . -user bob

# 查找属于组 staff 的文件
find . -group staff

7. 组合条件查找

# 查找 .txt 文件且大于 1MB
find . -name "*.txt" -size +1M

# 查找 .jpg 或 .png 文件
find . \( -name "*.jpg" -o -name "*.png" \)

# 查找非目录文件
find . ! -type d

8. 对查找结果执行操作

# 删除找到的文件(谨慎使用)
find . -name "*.tmp" -delete

# 显示文件详细信息
find . -name "*.conf" -ls

# 对找到的文件执行命令
find . -name "*.bak" -exec rm {} \;

# 使用 xargs 处理结果
find . -name "*.log" | xargs ls -l

高级用法

限制搜索深度

# 最多搜索 3 层子目录
find . -maxdepth 3 -name "file.txt"

# 至少搜索 2 层子目录
find . -mindepth 2 -name "file.txt"

正则表达式查找

# 使用正则表达式匹配
find . -regex ".*/file[0-9]+\.txt"

排除目录

# 查找时排除 node_modules 目录
find . -name "*.js" -not -path "./node_modules/*"

实用示例

  1. 查找并删除空文件
find . -type f -empty -delete
  1. 查找并压缩日志文件
find /var/log -name "*.log" -size +1M -exec gzip {} \;
  1. 查找最近修改的 10 个文件
find . -type f -printf '%T+ %p\n' | sort -r | head -10
  1. 查找重复文件
find . -type f -exec md5sum {} + | sort | uniq -w32 -dD

find 命令功能非常强大,以上只是常用功能的介绍。可以通过 man find 查看完整的文档和更多选项。