tongsiying

阅读|运动|自律

0%

Linux上天之路(十五)之文件查找

文件查找

主要内容

  • 精确查找
  • 模糊查找

1. 精确查找

1
find - search for files in a directory hierarchy 递归地在层次目录中处理文件

查找方式:

1
2
3
4
按文件属性查找
按文件类型查找
按文件大小查找
按时间查找

语法:

1
2
find path -option 动作
option
  • 按文件属性查找
1
2
3
4
5
6
7
8
9
10
11
12
13
-name 按文件名查找,区分大小写
-iname 按文件名查找,不区分大小写
-empty 查找空文件或目录
-maxdepth 查找最大深度 /第一级 /var/tmp/ 就是三级 / var tmp
-mindepth 从哪个深度开始查找 /var 第二级
-perm 文件权限 比如4777
-user 文件或文件夹所有者
-uid 文件或文件夹所有者UID
-group 文件或文件夹属组
-gid 文件或文件夹数组GID
-nouser 没有所有者的文件或文件夹 比用用户被删了
-nogroup 没有属组的文件或文件夹
-links 文件或文件夹硬链接数量
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
example:
查找名为passwd的文件或文件夹
[root@baism ~]# find / -name passwd

查找名为passwd的文件或文件夹,忽略大小写
[root@baism ~]# find / -iname passwd

查找空文件或目录
[root@baism ~]# find / -empty

查找深度2
[root@baism ~]# find / -maxdepth 3 -perm 4777 包括根三层

从第二层开始查询
[root@baism ~]# find / -mindepth 2 -perm 4777

查找所有者为baism的文件或文件夹
[root@baism ~]# find / -user baism
[root@baism ~]# find / -uid 1000

查找属组为baism的文件和文件夹
[root@baism ~]# find / -group baism
[root@baism ~]# find / -gid 1000

查找权限为4777的文件
[root@baism ~]# find / -perm 4777

查找没有所有者的文件
[root@baism ~]# find / -nouser

查找没有属组的文件
[root@baism ~]# find / -nogroup

找出硬链接大于2的文件
[root@baism ~]# find / -links +2 -type f

多目录查询
[root@baism ~]# find /etc /home -user baism
  • 按文件类型查找
1
2
3
4
5
6
7
8
9
10
f 普通文件
d 目录文件
l 符号链接文件
b 块设备 文件
c 字符设备文件
p 管道文件
s 套接字文件

example
查找文件类型为管道文件的 [root@baism ~]# find / -type p
  • 按文件大小查找
1
2
3
4
5
6
7
+大于
-小于
N 等于
c 字节
k KB
M MB
G GB
1
2
3
4
example
查找大于100M的文件 [root@baism ~]# find / -size +100M
查找小于1k的文件 [root@baism ~]# find / -size -1k
查找大小为0c的文件 [root@baism ~]# find / -size 0c
  • 按时间查找
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
+n 是比 n 大,

-n 是比 n 小,

n 正好是 n

按时间(天)

mtime修改时间

atime 访问时间

ctime 创建时间

找出一天以内修改过的文件 -mtime [root@baism ~]# find -mtime -1 -type f
找出一天以前修改过的文件 [root@baism ~]# find -mtime +1 -type f
找出一天以内访问过的文件 -atime [root@baism ~]# find -atime -1 -type f
找出一天以前访问过的文件 [root@baism ~]# find -atime +1 -type f
找出一天以内创建的文件 -ctime [root@baism ~]# find -ctime -1 -type f
找出一天以前创建的文件 [root@baism ~]# find -ctime +1 -type f
  • 按时间(分钟)
1
2
-mmin 修改时间
-amin 访问时间
1
2
找出十分钟内访问过的文件   -amin      [root@baism ~]# find / -amin -10 -type f
找出10分钟内修改过的文件 -mmin [root@baism ~]# find / -mmin -10 -type f
  • 执行命令
1
2
3
4
5
6
-print 打印输出
-ls 详细列出查找文件信息 类似于ls -l
-delete 删除找到的文件
-fls /PATH/file 把查找到的所有文件的长格式信息保存至指定文件中;
-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND表示的命令;每次操作都由用户进行确认;
-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND表示的命令;
1
2
3
4
5
[root@baism ~]# find / -perm 4777 -ls
[root@baism ~]# find / -perm 4777 -delete
[root@baism ~]# find / -user baism -fls /tmp/text
[root@baism ~]# find / -perm 4777 -ok rm -rf {} \;
[root@baism ~]# find / -perm 4777 -exec rm -rf {} \;

2. 模糊查找

1
2
3
4
locate模糊匹配
locate:模糊查找命令,查找的是linux系统每天特点时间自动索引备份到系统数据库中的文件。
命令语法:locate [OPTION]… PATTERN…
-i 不区分大小写
1
2
3
4
优点:查找文件速度快
locate命令其实是“find -name”的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库(/var/lib/locatedb),这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。
缺点:查找到的结果不是实时结果(必要时,可手动执行updatedb命令索引文件到数据库,但是相当耗时。)
为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。

 

赞赏一下吧~