侧边栏壁纸
  • 累计撰写 72 篇文章
  • 累计创建 22 个标签
  • 累计收到 2 条评论

目 录CONTENT

文章目录

【Linux命令】find

Administrator
2025-06-23 / 0 评论 / 0 点赞 / 15 阅读 / 6113 字 / 正在检测是否收录...

find 命令是一个强大的文件搜索工具,广泛用于 Unix/Linux 系统及 macOS 中,可根据文件的名称、类型、大小、修改时间、权限等条件查找文件或目录。以下是其常见用法及详细说明:

一、基本语法

find [路径] [条件] [操作]
  • 路径:指定搜索的起始目录,默认为当前目录(.)。

  • 条件:设置搜索的条件(如文件名、大小、时间等)。

  • 操作:对找到的文件执行的操作(如显示、删除、执行命令等)。

二、常用条件参数(按功能分类)

1. 按文件名搜索(最常用)

-name "模式":按文件名匹配,支持通配符(* 表示任意字符,? 表示单个字符)。

find /home/user -name "*.txt"  # 搜索/home/user目录下所有.txt文件
find . -name "doc?.*"  # 搜索当前目录下文件名以doc开头、第三个字符任意且带扩展名的文件

-iname "模式":不区分大小写的文件名匹配。

find . -iname "readme.md"  # 匹配Readme.md、README.md等

2. 按文件类型搜索

-type [d/f/l/c/b]:指定文件类型。

  • d:目录(directory)

  • f:普通文件(file)

  • l:符号链接(link)

  • c:字符设备文件(character)

  • b:块设备文件(block)

find /usr -type d -name "bin"  # 搜索/usr目录下名为bin的目录
find /dev -type c  # 搜索/dev目录下的字符设备文件

3. 按文件大小搜索

  • -size [+/-]数值[单位]:按文件大小过滤(+ 表示大于,- 表示小于)。

    • 单位:b(字节)、k(KB)、m(MB)、g(GB)。

find /var -size +100m  # 搜索/var目录下大于100MB的文件
find . -size -5k  # 搜索当前目录下小于5KB的文件

4. 按修改时间搜索

-mtime [+/-]数值:按文件内容最后修改时间(单位:天)。

  • +n:n 天前修改的文件

  • -n:n 天内修改的文件

find /logs -mtime +30  # 搜索/logs目录下30天前修改的文件
  • -mmin [+/-]数值:按分钟计算(用法同上)。

三、常用操作参数

1. 显示搜索结果

-print:默认操作,显示文件路径(可省略)。

find /etc -name "passwd"  # 等价于find /etc -name "passwd" -print

-ls:以类似ls -l的格式显示详细信息。

find . -type f -ls  # 显示当前目录下所有普通文件的详细信息

2. 对文件执行命令

-exec 命令 {} \;:对每个匹配的文件执行指定命令,{} 表示当前文件路径,\; 表示命令结束。

find . -name "*.log" -exec rm {} \;  # 删除当前目录下所有.log文件(慎用!)
find /tmp -type d -exec chmod 755 {} \;  # 给/tmp目录下的所有子目录设置755权限
  • -ok 命令 {} \;:与-exec类似,但执行前会询问确认。

四、高级用法与示例

1. 组合条件(逻辑运算)

-and&&:同时满足多个条件。

find /home -type f -name "*.sh" -and -size +10k  # 搜索/home目录下.sh文件且大于10KB的文件

-or||:满足任意一个条件。

find . -name "config" -or -name "settings"  # 搜索当前目录下名为config或settings的文件
  • -not!:排除条件。

find /usr -type f -not -name "*.txt"  # 搜索/usr目录下非.txt的文件

2. 限制搜索深度

-maxdepth 数值:限制搜索的最大目录层级。

find /var/log -maxdepth 2 -name "*.log"  # 只在/var/log下1-2级目录中搜索.log文件

3. 查找空文件或目录

-empty:匹配空文件或空目录。

find /tmp -empty  # 搜索/tmp目录下的空文件或空目录

五、注意事项

  1. 权限问题:搜索系统目录(如/usr/etc)时可能需要root权限。

  2. 性能影响:在根目录(/)或大目录中搜索可能耗时较长,建议尽量缩小搜索范围。

  3. 通配符转义:在 shell 中使用通配符时,若文件名包含特殊字符(如空格、*),需用引号包裹或转义(\)。

  4. 安全操作:使用-exec rm等危险命令时,建议先用-print确认结果,再执行操作。

0
博主关闭了所有页面的评论