一, 文件查找
1, 在文件系统上查找符合条件的文件
实现工具: locate,find
2,locate
a, 依赖于事先构建好的索引库;
系统自动实现 (周期性任务)
手动更新数据库 (updatedb), 此操作非常消耗系统资源
b, 工作特性
查找速度快
模糊查找
非实时查找
c, 相应参数
-b: 只匹配路径中的基名, 不包含路径
-c: 统计出共有多少个符合条件的文件
-r:BRE
3,find
a, 实时查找工具, 通过遍历指定起始路径下文件系统层级结构完成文件查找
b, 工作特性
查找速度略慢
精确查找
实时查找
c, 用法
find [OPTIONS] [查找起始路径] [查找条件] [处理动作]
查找起始路径: 指定具体搜索目标起始路径, 默认为当前目录
查找条件: 指定的查找标准, 可以根据文件名, 大小, 类型, 从属关系, 权限等等标准进行; 默认为找出指定路径下的所有文件;
处理动作: 对符合查找条件的文件作出的操作, 例如删除等操作, 默认为输出至标准输出
d, 查找条件
表达式: 选项和测试
测试:
(1), 根据文件名查找:
- -name "pattern"
- [[email protected] ~]# find /etc -name "passwd"
- /etc/passwd
- /etc/pam.d/passwd
-iname "pattern" : 忽略名称中的大小写
- [[email protected] ~]# find /etc -iname "passwd"
- /etc/passwd
- /etc/pam.d/passwd
- /etc/test/Passwd
支持 glob 风格的通配符:*,?,[],[^]
- [[email protected] ~]# find /etc -iname "passwd*"
- /etc/passwd
- /etc/pam.d/passwd
- /etc/passwd-
- /etc/test/Passwd
- /etc/test/passWD.txt
-regex pattern: 基于正则表达式模式查找文件, 匹配是整个路径, 而非基名 (一般很少用)
(2), 根据文件从属关系查找:
-user USERNAME: 查找属主为指定用户的所有文件
- [[email protected] ~]# find /tmp -user moosefs
- /tmp/moosefs
- /tmp/moosefs/.bash_logout
- /tmp/moosefs/.bash_profile
- /tmp/moosefs/.bashrc
- /tmp/skel
- /tmp/skel/.bash_logout
- /tmp/skel/.bash_profile
- /tmp/skel/.bashrc
- [[email protected] ~]# find /tmp -user Arch Linux
-group GRPNAME: 查找属组为指定用户的所有文件
-uid UID: 查找属主为指定 UID 的所有文件;
-gid GID: 查找属组为指定的 GID 的所有文件;
-nouser: 查找没有属主的文件
-nogroup: 查找没有属组的文件
(3), 根据文件的类型查找
-type TYPE:
f: 普通文件
d: 目录文件
l: 符号链接文件
b: 块设备文件
c: 字符设备文件
p: 管道文件
s: 套接字文件
查找 / dev 目录下所有的块设备文件并查看
- [[email protected] ~]# find /dev -type b -ls
- 10599 0 brw-rw---- 1 root disk 253, 1 Dec 19 18:39 /dev/dm-1
- 10548 0 brw-rw---- 1 root disk 253, 0 Dec 19 18:39 /dev/dm-0
- 10451 0 brw-rw---- 1 root cdrom 11, 0 Dec 19 18:39 /dev/sr0
- 10369 0 brw-rw---- 1 root disk 8, 2 Dec 19 18:39 /dev/sda2
- 10368 0 brw-rw---- 1 root disk 8, 1 Dec 19 18:39 /dev/sda1
- 10367 0 brw-rw---- 1 root disk 8, 0 Dec 19 18:39 /dev/sda
(4), 组合测试
与:-a, 默认也是与
或:-o, 但凡是
- [[email protected] ~]# find /tmp -nouser -o -type f -ls #只要符合二者之一即可
- 35697252 4 -rw-r--r-- 1 moosefs moosefs 18 Aug 3 2017 /tmp/moosefs/.bash_logout
- 35697253 4 -rw-r--r-- 1 moosefs moosefs 193 Aug 3 2017 /tmp/moosefs/.bash_profile
- 35697254 4 -rw-r--r-- 1 moosefs moosefs 231 Aug 3 2017 /tmp/moosefs/.bashrc
- 35697261 4 -rw-r--r-- 1 moosefs moosefs 18 Dec 20 16:47 /tmp/skel/.bash_logout
- 35697262 4 -rw-r--r-- 1 moosefs moosefs 193 Dec 20 16:47 /tmp/skel/.bash_profile
- 35697263 4 -rw-r--r-- 1 moosefs moosefs 231 Dec 20 16:47 /tmp/skel/.bashrc
- 17396129 4 -rw-r--r-- 1 root root 2055 Dec 23 15:43 /tmp/test.etc
- 16784826 20 -rw-r--r-- 1 root root 17500 Dec 25 15:36 /tmp/function.txt
- 17790829 8 -rw-r--r-- 1 root root 4253 Dec 26 09:59 /tmp/grub2.cfg
- 18336343 20 -rw-r--r-- 1 root root 17500 Dec 26 10:03 /tmp/functions
- [[email protected] ~]# find /tmp -nouser -a -type f -ls
- [[email protected] ~]#
非:-not,!
- [[email protected] ~]# find /tmp -nouser -not -type f -ls
- [[email protected] ~]#
e, 练习
(1), 找出 / tmp 目录下属主为非 root 的所有文件
- [[email protected] ~]# find /tmp/ -not -user root -ls
- 35697251 0 drwx------ 2 moosefs moosefs 62 Dec 19 20:43 /tmp/moosefs
- 35697252 4 -rw-r--r-- 1 moosefs moosefs 18 Aug 3 2017 /tmp/moosefs/.bash_logout
- 35697253 4 -rw-r--r-- 1 moosefs moosefs 193 Aug 3 2017 /tmp/moosefs/.bash_profile
- 35697254 4 -rw-r--r-- 1 moosefs moosefs 231 Aug 3 2017 /tmp/moosefs/.bashrc
- 35697260 0 drwxr-xr-x 2 moosefs moosefs 62 Dec 20 16:47 /tmp/skel
- 35697261 4 -rw-r--r-- 1 moosefs moosefs 18 Dec 20 16:47 /tmp/skel/.bash_logout
- 35697262 4 -rw-r--r-- 1 moosefs moosefs 193 Dec 20 16:47 /tmp/skel/.bash_profile
- 35697263 4 -rw-r--r-- 1 moosefs moosefs 231 Dec 20 16:47 /tmp/skel/.bashrc
(2), 找出 / tmp 目录下文件名中不包含 fstab 字符串的文件
[[email protected] ~]# find /tmp -not -iname "*fstab*" -ls
(3), 找出 / tmp 目录下属主为非 root, 而且文件名不包含 fstab 字符串的文件
- [[email protected] ~]# find /tmp -not -user root -a -not -iname "*fstab*" -ls
- 35697251 0 drwx------ 2 moosefs moosefs 62 Dec 19 20:43 /tmp/moosefs
- 35697252 4 -rw-r--r-- 1 moosefs moosefs 18 Aug 3 2017 /tmp/moosefs/.bash_logout
- 35697253 4 -rw-r--r-- 1 moosefs moosefs 193 Aug 3 2017 /tmp/moosefs/.bash_profile
- 35697254 4 -rw-r--r-- 1 moosefs moosefs 231 Aug 3 2017 /tmp/moosefs/.bashrc
- 35697260 0 drwxr-xr-x 2 moosefs moosefs 62 Dec 20 16:47 /tmp/skel
- 35697261 4 -rw-r--r-- 1 moosefs moosefs 18 Dec 20 16:47 /tmp/skel/.bash_logout
- 35697262 4 -rw-r--r-- 1 moosefs moosefs 193 Dec 20 16:47 /tmp/skel/.bash_profile
- 35697263 4 -rw-r--r-- 1 moosefs moosefs 231 Dec 20 16:47 /tmp/skel/.bashrc
- [[email protected] ~]# find /tmp -not \( -user root -o -iname "*fstab*" \) -ls
- 35697251 0 drwx------ 2 moosefs moosefs 62 Dec 19 20:43 /tmp/moosefs
- 35697252 4 -rw-r--r-- 1 moosefs moosefs 18 Aug 3 2017 /tmp/moosefs/.bash_logout
- 35697253 4 -rw-r--r-- 1 moosefs moosefs 193 Aug 3 2017 /tmp/moosefs/.bash_profile
- 35697254 4 -rw-r--r-- 1 moosefs moosefs 231 Aug 3 2017 /tmp/moosefs/.bashrc
- 35697260 0 drwxr-xr-x 2 moosefs moosefs 62 Dec 20 16:47 /tmp/skel
- 35697261 4 -rw-r--r-- 1 moosefs moosefs 18 Dec 20 16:47 /tmp/skel/.bash_logout
- 35697262 4 -rw-r--r-- 1 moosefs moosefs 193 Dec 20 16:47 /tmp/skel/.bash_profile
- 35697263 4 -rw-r--r-- 1 moosefs moosefs 231 Dec 20 16:47 /tmp/skel/.bashrc
f, 根据文件的大小查找
-size [+|-]#UNIT
常用单位: k,M,G
- #UNIT:(#-1,#] 相当于值可以小于 #一点, 也可以等于 #, 但是要大于 #-1
- -#UNIT:[0,#-1] 相当于值在 0 到 #-1 之间, 也可以为 #-1
- [[email protected] ~]# find /tmp/ -size 45k #等于 45k 的, 这个在 44k-45k 之间, 但是不包括 44k, 可以包括 45k
- /tmp/messages
- /tmp/messages.2
- [[email protected] ~]# find /tmp/ -size -45k #小于 45k 的, 但是不包括 44k-45k 之间, 如果等于 44k 也可以匹配到
- /tmp/
- /tmp/.Test-unix
- /tmp/.font-unix
- /tmp/.ICE-unix
- /tmp/.X11-unix
- /tmp/.XIM-unix
- +#UNIT:(#,oo) . 相当于值需要大于 #的
- [[email protected] ~]# find /tmp/ -size +45k
- [[email protected] ~]# find /tmp/ -size +44k
- /tmp/messages
- /tmp/messages.2
- [[email protected] ~]# find /tmp/ -size -44k
- /tmp/
- /tmp/.Test-unix
- /tmp/.font-unix
- /tmp/.ICE-unix
- /tmp/.X11-unix
- /tmp/.XIM-unix
- [[email protected] ~]# find /tmp/ -size 44k
- [[email protected] ~]# find /tmp/ -size -45k
- /tmp/
- /tmp/.Test-unix
- /tmp/.font-unix
- /tmp/.ICE-unix
- /tmp/.X11-unix
- /tmp/.XIM-unix
- [[email protected] ~]# find /tmp/ -size 45k
- /tmp/messages
- /tmp/messages.2
g, 根据时间戳查找
以天为单位
- -atime [+|-]#
- #
- -mtime
- -ctime
以分钟为单位
- -amin
- -mmin
- -cmin
- 1:07:59
来源: http://www.bubuko.com/infodetail-3351419.html