一、文件查找
1、在文件系统上查找符合条件的文件
实现工具:locate,find
2、locate
a、依赖于事先构建好的索引库;
系统自动实现(周期性任务)
手动更新数据库(updatedb),此操作非常消耗系统资源
b、工作特性
查找速度快
模糊查找
非实时查找
c、相应参数
-b:只匹配路径中的基名,不包含路径
-c:统计出共有多少个符合条件的文件
-r:BRE
3、find
a、实时查找工具,通过遍历指定起始路径下文件系统层级结构完成文件查找
b、工作特性
查找速度略慢
精确查找
实时查找
c、用法
find [OPTIONS] [查找起始路径] [查找条件] [处理动作]
查找起始路径:指定具体搜索目标起始路径,默认为当前目录
查找条件:指定的查找标准,可以根据文件名,大小,类型,从属关系,权限等等标准进行;默认为找出指定路径下的所有文件;
处理动作:对符合查找条件的文件作出的操作,例如删除等操作,默认为输出至标准输出
d、查找条件
表达式:选项和测试
测试:
(1)、根据文件名查找:
-name "pattern"
[root@node1 ~]# find /etc -name "passwd" /etc/passwd /etc/pam.d/passwd
-iname "pattern" :忽略名称中的大小写
[root@node1 ~]# find /etc -iname "passwd" /etc/passwd /etc/pam.d/passwd /etc/test/Passwd
支持glob风格的通配符:*,?,[],[^]
[root@node1 ~]# find /etc -iname "passwd*" /etc/passwd /etc/pam.d/passwd /etc/passwd- /etc/test/Passwd /etc/test/passWD.txt
-regex pattern:基于正则表达式模式查找文件,匹配是整个路径,而非基名(一般很少用)
(2)、根据文件从属关系查找:
-user USERNAME:查找属主为指定用户的所有文件
[root@node1 ~]# 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 [root@node1 ~]# find /tmp -user archlinux
-group GRPNAME:查找属组为指定用户的所有文件
-uid UID:查找属主为指定UID的所有文件;
-gid GID:查找属组为指定的GID的所有文件;
-nouser:查找没有属主的文件
-nogroup:查找没有属组的文件
(3)、根据文件的类型查找
-type TYPE:
f:普通文件
d:目录文件
l:符号链接文件
b:块设备文件
c:字符设备文件
p:管道文件
s:套接字文件
查找/dev目录下所有的块设备文件并查看
[root@node1 ~]# 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,但凡是
[root@node1 ~]# 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 [root@node1 ~]# find /tmp -nouser -a -type f -ls [root@node1 ~]#
非:-not,!
[root@node1 ~]# find /tmp -nouser -not -type f -ls [root@node1 ~]#
e、练习
(1)、找出/tmp目录下属主为非root的所有文件
[root@node1 ~]# 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字符串的文件
[root@node1 ~]# find /tmp -not -iname "*fstab*" -ls
(3)、找出/tmp目录下属主为非root,而且文件名不包含fstab字符串的文件
[root@node1 ~]# 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
[root@node1 ~]# 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
[root@node1 ~]# find /tmp/ -size 45k #等于45k的,这个在44k-45k之间,但是不包括44k,可以包括45k /tmp/messages /tmp/messages.2 [root@node1 ~]# 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) 。相当于值需要大于#的
[root@node1 ~]# find /tmp/ -size +45k [root@node1 ~]# find /tmp/ -size +44k /tmp/messages /tmp/messages.2 [root@node1 ~]# find /tmp/ -size -44k /tmp/ /tmp/.Test-unix /tmp/.font-unix /tmp/.ICE-unix /tmp/.X11-unix /tmp/.XIM-unix [root@node1 ~]# find /tmp/ -size 44k [root@node1 ~]# find /tmp/ -size -45k /tmp/ /tmp/.Test-unix /tmp/.font-unix /tmp/.ICE-unix /tmp/.X11-unix /tmp/.XIM-unix [root@node1 ~]# find /tmp/ -size 45k /tmp/messages /tmp/messages.2
g、根据时间戳查找
以天为单位
-atime [+|-]#
#
-mtime
-ctime
以分钟为单位
-amin
-mmin
-cmin
1:07:59
linux学习24 Linux运维必备技能-文件查找命令企业级应用
原文:https://www.cnblogs.com/Presley-lpc/p/12102403.html