linux文件查找之find

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux文件查找之find相关的知识,希望对你有一定的参考价值。

find - search for files in a directory hierarchy
在层级目录中查找文件工具

语法

find [OPTIONS] [查找起始路径] [查找条件] [处理动作]

常用选项

  • -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写。支持glob风格的通配符;
  • -user USERNAME:查找属主指定用户的所有文件;
  • -group GRPNAME:查找属组指定组的所有文件;
  • -uid UID:查找属主指定的UID的所有文件;
  • -gid GID:查找属组指定的GID的所有文件;
  • -nouser:查找没有属主的文件;
  • -nogroup:查找没有属组的文件;

  • 根据文件的类型查找:-type TYPE:

    • f: 普通文件
    • d: 目录文件
    • l:符号链接文件
    • b:块设备 文件
    • c:字符设备文件
    • p:管道文件
    • s:套接字文件
  • 组合:

    • 与:-a, 默认组合逻辑;
    • 或:-o
    • 非:-not, !
  • 根据文件的大小查找:

    • -size [+|-]#UNIT ;常用单位:k, M, G
    • #UNIT:(#-1, #]
    • -#UNIT:[0,#-1]
    • +#UNIT:(#, oo)
  • 根据时间戳查找:

    • 以“天”为单位:这里的天是以24小时位单位
      • -atime [+|-]# 访问时间
      • -mtime 修改时间
      • -ctime 创建时间
    • 以“分钟”为单位:
      • -amin
      • -mmin
      • -cmin
  • 根据权限查找:-perm [/|-]mode;0表示不参与

    • mode:精确权限匹配;
    • /mode:任何一类用户(u,g,o)的权限中的任何一位(r,w,x)符合条件即满足;9位权限之间存在“或”关系;
    • -mode:每一类用户(u,g,o)的权限中的每一位(r,w,x)同时符合条件即满足;9位权限之间存在“与”关系;
  • 处理动作:
    • -print:输出至标准输出;默认的动作;
    • -ls:类似于对查找到的文件执行“ls -l”命令,输出文件的详细信息;
    • -delete:删除查找到的文件;
    • -fls /PATH/TO/SOMEFILE:把查找到的所有文件的长格式信息保存至指定文件中;
    • -ok COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令;每次操作都由用户进行确认;
    • -exec COMMAND {} \; :对查找到的每个文件执行由COMMAND表示的命令;

DEMO:

找出/tmp目录下属主为非root的所有文件

[[email protected] ~]# find /tmp/   -not -uid 0 -ls
[[email protected] ~]# find /tmp/   -not -user root -ls

查找/var目录下属主为root,且属组为mail的所有文件或目录;

[[email protected] test]# find /var/ -user root -group mail
find /var/ -uid 0 -group mail

文件大小查找

[[email protected] test]# ll -h
总用量 52K
-rw-------. 1 root root 24K 4月  22 13:31 messages
-rw-------. 1 root root 25K 4月  22 13:31 messages.bak
[[email protected] tmp]# find ./  -size -25k -ls     
[[email protected] tmp]# find ./  -size 25k -ls      (24k,25k]    24k< x <=25k
./messages.bak
[[email protected] test]# find ./ -size -25k -type f    [0,24k]    0<= x <=24k
./messages
[[email protected] test]# find ./ -size +24k -type f   [25k,  ]    25<= x
./messages.bak

按照文件时间来查找
技术分享图片

[[email protected] test]# date
2018年 04月 22日 星期日 13:49:30 EDT

[[email protected] test]# find /etc/ -type f -atime 3 -ls
[[email protected] ~]# stat /etc/kdump.conf
  File: ‘/etc/kdump.conf’
  Size: 7265        Blocks: 16         IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 17265603    Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:kdump_etc_t:s0
Access: 2018-04-18 23:03:40.914728405 -0400
Modify: 2018-04-16 13:12:52.585009262 -0400
Change: 2018-04-16 13:12:52.585009262 -0400
 Birth: -

查找/usr目录下不属于root, bin或zander的所有文件或目录;

[[email protected] test]# find /usr -not \( -user root -o -user bin -o -user zander  \)
[[email protected] test]# find /usr -not -user root  -a -not -user bin -a -not  -user zander

查找/etc目录下最近一周内其内容修改过,且属主不是root用户也不是zander用户的文件或目录;

[[email protected] test]# find /etc/ -mtime -7 -a  -not -user root -a -not -user zander
[[email protected] test]# find /etc/ -mtime -7 -a  -not \( -user root -o  -user zander \)

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

[[email protected] test]# find / \( -nouser -o -nogroup \) -a -atime -7

查找/etc目录下大于1M且类型为普通文件的所有文件;

[[email protected] test]# find /etc/ -size +1M -type f -exec ls -lh {} \;

查找/etc目录下所有用户都没有写权限的文件;

先找任何一个有写权限 && 取反
[[email protected] test]# find /etc/ -not -perm /222 -type f -exec ls -lh {} \;

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

所有用户都有权限  && 取反
[[email protected] test]# find /etc/ -not  -perm  -111 -type  f  -exec ls -lh {} \;

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

[[email protected] test]# find /etc/init.d/ -perm -111 -a -perm -112 -type f  -ls
[[email protected] test]# find /etc/init.d/ -perm -113 -type f  -ls

找出/tmp目录下文件名中不包含fstab字符串的文件

[[email protected] ~]# find /tmp/  -type f -not -name   ‘*fstab*‘

找出/tmp目录下属主为非root,而且文件名不包含fstab字符串的文件

[[email protected] ~]# find /tmp/  -not -name   ‘*fstab*‘ -not -user root

以上是关于linux文件查找之find的主要内容,如果未能解决你的问题,请参考以下文章

Linux文件查找工具之find(详解)

linux文件查找之find命令

Linux系统之find

linux文件查找之find

Linux之find文件(目录)查找

Linux命令之查找文件find