Linux find命令的常用选项

find 命令是 Linux 系统中功能强大的文件和目录搜索工具,以下为你详细介绍其常用选项:

定位搜索范围

  • -path:基于文件路径进行搜索,可以使用通配符。例如,搜索 /home/user 目录下所有路径中包含 docs 的文件:
find /home/user -path "*/docs/*"
  • -prune:用于排除某些目录,避免在这些目录中进行搜索。比如,要搜索 /home 目录,但排除 /home/temp 目录:
find /home -path "/home/temp" -prune -o -print

这里 -o 是逻辑或运算符,-print 用于打印搜索到的文件路径。

按文件基本属性搜索

  • -name:根据文件名进行搜索,支持通配符。如搜索当前目录下所有以 .log 结尾的文件:
find . -name "*.log"
  • -iname:和 -name 类似,但不区分大小写。例如,搜索所有文件名包含 readme 的文件,不考虑大小写:
find . -iname "*readme*"
  • -type:依据文件类型进行搜索,常见的文件类型有:
    • f:普通文件
    • d:目录
    • l:符号链接
    • c:字符设备文件
    • b:块设备文件

    例如,搜索 /var 目录下的所有目录:
find /var -type d

按文件时间属性搜索

  • -mtime:根据文件内容的最后修改时间搜索,时间单位为天。例如,搜索在 7 天前修改过的文件:
 
find . -mtime +7

+ 表示大于指定时间,- 表示小于指定时间,没有符号则表示等于指定时间。
  • -atime:基于文件的最后访问时间搜索。比如,搜索在最近 3 天内被访问过的文件:
find . -atime -3
  • -ctime:根据文件的状态(如权限、所有者等)最后改变时间搜索。例如,搜索在 1 天前状态改变过的文件:
find . -ctime 1

按文件大小搜索

  • -size:根据文件大小进行搜索,单位可以是字节(c)、千字节(k)、兆字节(M)、吉字节(G)等。例如,搜索当前目录下大小大于 10MB 的文件:
 
find . -size +10M

同样,+ 表示大于,- 表示小于。

逻辑组合选项

  • -and:逻辑与运算符,默认情况下多个条件之间是逻辑与的关系,也可以显式使用 -and。例如,搜索 /home 目录下文件名以 .txt 结尾且大小大于 1KB 的文件:
 
find /home -name "*.txt" -and -size +1k
  • -or:逻辑或运算符。例如,搜索当前目录下文件名以 .txt 或 .log 结尾的文件:
find . -name "*.txt" -or -name "*.log"
  • -not:逻辑非运算符。例如,搜索当前目录下文件名不以 .bak 结尾的文件:
 
find . -not -name "*.bak"

执行操作选项

  • -exec:对搜索到的文件执行指定的命令。例如,找到所有 .pdf 文件并将其复制到 /backup 目录:
 
find . -name "*.pdf" -exec cp {} /backup \;

{} 代表搜索到的文件,\; 是命令的结束标志。
  • -ok:和 -exec 类似,但在执行命令前会先询问用户是否执行。例如:
find . -name "*.old" -ok rm {} \;

输出选项

  • -print:打印搜索到的文件路径,这是 find 命令的默认动作。例如:
 
find . -type f -print
  • -print0:用空字符(\0)分隔输出的文件路径,适用于文件名包含特殊字符(如空格)的情况。例如:
find . -name "*.txt" -print0 | xargs -0 ls -l

posted on 2025-06-08 11:00  数据派  阅读(70)  评论(0)    收藏  举报