用途:
当我们在查找指定的文件时,ls和locate等并不能合理的满足我们的要求,此时可以
使用find的命令来查找
特点:
实时查找工具,通过遍历指定路径完成文件查找
精确查找
查找速度略慢
默认递归查找
只搜索用户具备读取和执行权限的目录
基本用法:
find 路径 -mindepth # 指明查找文件的最小深度
-maxdepth # 指明查找文件的最小深度
-name 文件名 以文件名查找
-iname 文件名 文件名不区分大小写查找
-user 用户名 查找owner是指定用户的文件
-group 组名 查找指定组的文件
-nouser 用户名 查找不是指定用户名的文件
-nogroup 组名 查找不是指定用户名的文件
按文件类型查找:
find 路径 -type f 查找普通文件
d 查找目录文件
s 查找套接字文件
b 查找块设备文件
c 查找字符文
p 查找管道文件
l 查找符号链接文件
按文件大小查找:
find 路径 -size +#k 查找大于#k的文件
-#k 查找小于#k的文件
#k 查找 大于#-1 小于等于#k的文件
按时间查找:
find 路径 -atime +# 查找#天以后的文件
-# 查找#天以前的文件
# 查找 大于#-1 小于等于#天的文件
处理动作:
find 路径 查找条件 --ls 将查找的结果长显示
--delete 将查找的结果删除
-exec command {} \ ;将查找的结果当做参数传递下去
实例说明:
基础用法:
[root@localhost app]# tree
.
└── dir1
├── b
├── c
└── dir2
├── d
├── dir3
│ ├── f
│ └── g
└── e
3 directories, 6 files
[root@localhost app]# find -maxdepth 2
.
./dir1
./dir1/dir2
./dir1/b
./dir1/c
[root@localhost app]# ls -l dir1/dir2/d
-rw-r--r--. 1 guanyu root 0 Jul 28 08:11 dir1/dir2/d
[root@localhost app]# find -user guanyu
./dir1/dir2/d
[root@localhost app]# find -type d
.
./dir1
./dir1/dir2
./dir1/dir2/dir3
[root@localhost app]# find -size +30k
./b
[root@localhost app]# ls -lh b
-rw-r--r--. 1 root root 40K Jul 28 11:29 b
[root@localhost app]# find -name c -ls
25168099 0 -rw-r--r-- 1 root root 0 Jul 28 08:11 ./dir1/c
[root@localhost app]# find -name c -exec rm {} \;
[root@localhost app]# tree
.
└── dir1
├── b
└── dir2
├── d
├── dir3
│ ├── f
│ └── g
└── e
引申用法:
[root@localhost app]# find -name f -a -group root -ls
8405953 0 -rw-r--r-- 1 root root 0 Jul 28 08:11 ./dir1/dir2/dir3/f
[root@localhost app]# find -user guanyu -o -user zhangfei
./dir1/dir2/d
./dir1/dir2/e
[root@localhost dir2]# find -not -user root
./d
./e
[root@localhost app]# find /app -path '/app/dir1/dir2' -a -prune -o -user root
/app
/app/dir1
/app/dir1/dir2
/app/dir1/b
[root@localhost app]# tree
.
└── dir1
├── b
└── dir2
├── d
├── dir3
│ ├── f
│ └── g
└── e
说明:去除指定目录后,在按指定的内容查找
补充说明:合理使用find会加速我们的工作效率。