Skip to the content.

find命令

Linux find命令详解

find命令是 Linux 系统中非常强大且常用的文件查找工具,它可以在指定的目录及其子目录下,按照各种条件来查找文件或目录。

命令语法

find [path] [options] [expression]
  • path:指定查找的起始目录路径,如果不指定,默认从当前目录开始查找。
  • options:用于指定查找的条件和方式。
  • expression:用于进一步筛选和处理找到的文件或目录的表达式。

常用选项

按文件名查找

  • 选项-name
  • 示例find /home -name "*.txt"
  • 说明:在 /home 目录及其子目录下查找所有扩展名为 .txt 的文件。文件名支持通配符,* 表示匹配任意字符序列,? 表示匹配单个字符。

按文件类型查找

  • 选项-type
  • 示例find /var -type d
  • 说明:在 /var 目录及其子目录下查找所有目录。常见的文件类型参数有:
    • f:普通文件
    • d:目录
    • l:符号链接
    • b:块设备文件
    • c:字符设备文件

按文件大小查找

  • 选项-size
  • 示例find /data -size +10M
  • 说明:在 /data 目录及其子目录下查找大小大于 10MB 的文件。-size 参数的常见格式有:
    • +n:表示大于 n 单位(单位可以是 b 字节、k 千字节、M 兆字节、G 吉字节等)
    • -n:表示小于 n 单位
    • n:表示正好等于 n 单位

按文件权限查找

  • 选项-perm
  • 示例find /etc -perm 644
  • 说明:在 /etc 目录及其子目录下查找权限为 644 的文件。权限可以用数字表示,也可以用符号表示(如 u=rwx,g=rx,o=r)。

按文件所有者查找

  • 选项-user
  • 示例find /home -user john
  • 说明:在 /home 目录及其子目录下查找所有者为 john 的文件。

按文件所属组查找

  • 选项-group
  • 示例find /var/log -group adm
  • 说明:在 /var/log 目录及其子目录下查找所属组为 adm 的文件。

按文件修改时间查找

  • 选项-mtime
  • 示例find /backup -mtime +7
  • 说明:在 /backup 目录及其子目录下查找修改时间大于 7 天的文件。mtime 参数的常见格式有:
    • +n:表示大于 n
    • -n:表示小于 n
    • n:表示正好 n

常用表达式

逻辑与

  • 表达式-and-a
  • 示例find /home -name "file.txt" -and -user root
  • 说明:在 /home 目录及其子目录下查找名为 file.txt 且所有者为 root 的文件。

逻辑或

  • 表达式-or-o
  • 示例find /home -name "file1.txt" -or -name "file2.txt"
  • 说明:在 /home 目录及其子目录下查找名为 file1.txt 或者 file2.txt 的文件。

逻辑非

  • 表达式!
  • 示例find /home ! -name "*.bak"
  • 说明:在 /home 目录及其子目录下查找所有文件名不是以 .bak 结尾的文件。

Categories: