find使用说明

find使用说明正则表达式

1、定义数据库

在文件系统上查找符合条件的文件的过程数组

2、命令工具bash

locate:非实时查找工具,依赖于系统在较空闲时自动构建的索引数据库查找。socket

优势:按索引查找,速度更快;ide

缺点:索引数据库的构建并不是是根据文件的修改实时更新。因此,查找的信息是过时的,只可以模糊查询;工具

find:实时查找;find查找须要遍历整个默认或指定的目录,可以作到精确查找,查找速度却很慢。oop

 

3、find使用说明ui

find [OPTION]... [查找路径] [查找条件] [处理动做]spa

查找路径:默认为当前路径

查找条件:根据OPTION指定查找标准,具体条件能够使用正则表达式匹配

处理动做:对符合条件的文件做出的动做;默认为输出到屏幕


OPTION和查找条件:

1、根据文件名查找:

-name FILENAME  可以使用正则匹配

-inameFILENAME 不区分字符大小写

-regex  "PATTERN"  匹配整个文件路径字符串,而不单单是文件名


2、根据文件类型查找:

-type f|b|d|l|c|s

f:普通文件

b:块文件

c:字符文件

d:目录

l:连接文件

ssocket 套接字文件

3、根据属主,属组查找

-nouser   查找没有属主的文件

-nogroup  查找没有属组的文件

-user USERNAME   查找属主为USERNAME的文件

-group GROUPNAME 查找属组为GROUPNAME的文件

-uid UID

-gid GID

4、根据文件大小查找

-size [+|-] #    

单位:K,M,G 

# (#-1,#]    #-1 < filesize <= #

+# (#,+oo)    #  < filesize 

-# [0,#-1)    0 <= filesize < #-1 

5、根据时间戳

单位为”天“

-atime  accessed时间戳

-mtime  modified时间戳  修改内容

-ctime  changed时间戳   修改内容,属性

单位为”分“

-amin

-mmin

-cmin

 #   [#,#+1)   #   # <= file[a|m|c]time < #+1 

+#  [#+1,+oo]  #天前  #+1 <= file[a|m|c]time

-#  [0,#)     #天内   0 <= file[a|m|c]time < #

注解:#为当前时间减去文件时间戳的时间



6、根据权限

 -perm [+|-]MODE

            MODE:MODE精确匹配

            /MODE+MODE:任何一类用户只要能包含对其指定的任何一位权限便可  

例:+555  表示只要目录文件只要属主或数组或任何人中只要有WX就匹配

            -MODE:每一类用户的权限都包含对其指定的因此权限

            -222:   666权限的文件符合   664不符合

7、组合查找

与:-a and

或:-o or

非:-not !

公式:

!A -o !B = !(A -a B)

!A -a !B = !(A -o B)

处理动做

-print: 默认处理动做

-ls:相似于对查找到的每一个文件作"ls -l"的操做;

-delete: 删除查找到的文件;

-fls /path/to/somefile:查找到的文件的详细路径信息保存至指定文件中;

 

-ok COMMAND {} \;

对每一个文件执行指定的命令以前须要用户事先确认;

-exec COMMAND {} \;

无需用户确认;

4、练习

一、查找/var目录属主为root,且属组为mail的全部文件;

# find /var -user root -group mail -ls

二、查找/usr目录下不属于root、bin或hadoop的全部文件;

# find /usr ! \( -user root -o bin -o hadoop \) -ls

三、查找/etc目录下最近一周内其内容修改过,且属主不为root或hadoop的全部文件;

# find /etc ! \( -user root -o hadoop \) -mtime -7 -ls

四、查找当前系统上没有属主或属组,且最近一周内曾被访问过的全部文件;

# find / \( -nouser -a -nogroup \) -a -atime -7  -ls

五、查找/etc目录下大于20k且类型为普通的全部文件;

# find /etc -type f -size +20k -ls

六、查找/etc目录下全部用户都没有写权限的文件;

# find /etc ! -perm +222 -ls

七、查找/etc目录下至少有一类用户没有执行权限的文件;

# find /etc ! -perm -111 -ls

八、查找/etc/init.d目录下,全部用户都有执行权限,且其它用户拥有写权限的文件;

# find /etc/init.d -perm -113 -ls
相关文章
相关标签/搜索