Back
Featured image of post Find文件查找

Find文件查找

总结文件查找命令 find 的常用参数, 以及实操命令

常用选项 (找文件)

语法格式

image-20231210194845588

选项参数表:

image-20231210194910732

image-20231210195003301

常用 解释
-name find /etc -name ‘*conf’
-iname find /etc -name ‘*conf’ 忽略大小写
-user find . -user username
-group find . -group groupname
-type find . -type f
-size find /etc -size -10000c 查找小于10000字节的文件

-type 参数

-type 参数 对应文件类型
f 文件类型
d 目录
c 字符设备文件
b 块设备文件
l 链接文件
p 管道文件

-size 参数

-size 参数 说明
-n find /etc -size -10000c 查找小于10000字节的文件
+n find /etc -size +1M 查找大于10000字节的文件

c : 字节

k: 1000字节

M : Mb

-mtime

以天为单位

-mtime 参数 说明
-n n 天内修改的文件
+n n 天以前修改的文件
n 第 n 天修改的文件

示例

  1. 查找 /etc 下 5 天内修改的文件, 并以 conf 结尾
  2. 查找 /etc 10 天前修改的文件, 属主为 root
$ find /etc -mtime -5 -name '*conf'

$ find /etc -mtime +10 -user root

-mmin

-mmin 参数 说明
-n n 分钟内修改
+n n 分钟以前修改

-mindepth

要作为 find 第一个选项

从第 n 级子目录开始搜索

要搜索的目录为第一个目录

-maxdepth

-newer

$ find /etc -newer 123.txt  # 查找比 123.txt 更新的文件

find 操作 (执行)

  • -print
  • -exec
  • -ok : 与 -exec 一致, 需要用户交互

-exec

删除

$ find ./etc -name "*conf" -exec rm -rf {} \;

复制

$ find ./etc -size +1M -exec cp {} ./test/ \;

练习: 把 /var/log/ 下 7 天以上的文件删除

$ find /var/log/ -name "*.log" -mtime +7 -exec rm -rf {} \;

逻辑运算符

  • -a 与
  • -o 或
  • -not | ! 非
$ find . -not -user <username> 
$ find . ! -user <username> 

$ find -type f -a -user <username> -a -size +300c

# 属主为 ? 或以 .yml 结尾的文件
$ find . -type f -a \( -user <username> -o -name '*.yml' \)

其他查找命令

locate: 默认部分匹配

位于软件包 mlocate

find 是直接从磁盘中查找, locate 是从数据库中查找

数据库文件位置: /var/lib/mlocate/mlocate.db -> 通过 updatedb 更新数据库文件

数据库配置文件: /etc/updatedb.conf

在后台 cron 定定时任务执行更新

whereis: 查找二进制文件

选项 说明
-b 二进制文件
-m 返回帮助文档
-s 返回源代码文件

which: 查找二进制程序文件

which mysql