• linux下文件查找工具--find


    常用的文件查找命令有:which,locate,find

    1.which命令

    查找二进制数或二进制命令,由PATH给出

    2.loacte

    特点:
    1.非实时,每天在系统上生成数据库,通过数据库查询
    2.模糊查询
    3.updatedb,实时查询需要进行数据的更新,更新一般需要几分钟时间,所以一般是在晚上
    4.查找速度快

    3.find

    特点:
    1.实时查找
    2.文件遍历
    3.精确匹配
    4.速度较慢

    查找方式:

    3.1 根据文件名查找

    -name:
    -iname:

    find ./ -name "test"
    

    3.2 根据文件的属主,属主查找

    -user:属主
    -group:属组
    -uid:根据文件的uid实现精确查找
    -gid:根据文件的gid实现精确查找
    -nouser,-nogroup:对于已经被删除用户名或用户组的文件,系统只会保留相应的gid,uid号码用以标识,而如果此时新建一个用户名就用可能取得某些文件的管理权限,出于安全的考虑,所以要对这些文件进行查找,保证安全

    3.3 命令的组合用法

    与:-a
    或:-o
    非:-not,-!

    3.4 根据文件类型进行查找:-type [文件类型]

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

    find /var -type s  #查找/var下的套接字文件
    

    3.5 根据文件大小进行查找

    -size [+或-] [文件大小]
    查找比SIZE还要大(+)或者小(-)的文件
    文件大小的表示:c:代表byte,k:代表1024bytes,M:代表1024k

    3.6 根据文件的时间进行查找

    1.mtime:当文件的“内容数据” 更改时,就会更新这个时间。内容数据指的是文件的内容,而不是文件的属性与权限
    2.ctime:当文件的状态发生变化时,就会更新这个数据,比如:权限与属性发生变化
    3.atime:当文件的内容被读取时,就会更新这个时间

    以天为单位:-ctime,-atime,-mtime
    以分钟为单位:-cmin,-amin,-mmin

    例:

    1.从现在开始到24小时之前有过改动的文件全部列出来

    find / -mtime 0 
    

    2.寻找/etc下面的文件,如果文件日期比/etc/passwd新就列出来
    -newer用在分辨两个文件之间的新旧关系

    find /etc -newer /etc/passwd
    

    3.寻找四天前的那一天被改动的文件

    find /var -mtime 4 
    

    4.四天之内被改动过的文件

    find /var -mctime -4
    

    +4:代表大于等于五天前的文件名:find /var -mtime +4
    -4: 代表小于等于四天内的文件名
    4:代表4~5天那一天的文件

    3.7 根据文件权限进行查询:-prem [option]

    1.-perm mode
    精确查找,文件权限正好等于mode,mode为类似于chmod的属性值

    2.-perm -mode
    每一类对象都必须拥有其指定的权限标准

    3.-perm /mode
    任何一类(u,g,o)对象的权限只要有一位匹配即可

    find . -perm /u+w,g+w
    find . -perm /u=w,g=w
    find . -perm /220
    find . -perm -444 -perm /222 ! -perm /111
    find . -perm -a+r -perm /a+w ! -perm /a+x
    

    3.8 其他相关命令

    1.-exec command:
    command 为其他命令,-exec可以接其他的命令来处理查询结果

    2.-delete:删除查找到的文件

    3.-fls /path/to/somefile:
    查找到的文件的长格式信息保存至指定的文件夹

    find /var/log -ctime -4 -fls /tmp/test/abc
    

    4.-ok command {} :
    对查找的文件执行由command指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认

    5.-exec command {} :
    对查找到的每个文件执行由command执行的命令

    {}:用于引用查找到的文件名称自身;注意:find传递查找到的文件至后面指定的命令时,查找到的所有符合的文件一次性传递给后面的命令

    3.9 练习

    1.查找/var 目录下属主为root,且属组为mail的所有文件或目录并列出

    find /var -user root -group mail -ls
    

    2.查找/usr 目录下不属于root、bin、hadoop的所有文件或目录

    find /usr -not -user root -not -user hadoop -not -user bin -ls
    find /usr -not ( -user root -o -user hadoop -o -not -user bin ) -ls
    

    3.查找/etc目录下最近一周内其内容修改过,同时属主不为root,也不为hadoop的文件或目录

    find /etc -mtime -7 -a -not ( -user root -o -user hadoop ) -ls
    

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

    find / -ctmie -7 -a -nouser -a nogroup
    

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

    find /etc -size +1M -a -type f -ls
    

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

    find /etc -not -perm /222 -ls
    

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

    find /etc -not -perm -111 -ls
    

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

    find /etc/init.d -prem /113 -ls
    

    9.查找/tmp/test/y目录下在100分钟内修改过的文件,并删除

    find /tmp/test/y -cmin -100 -print | xargs /bin/rm -fr
    find /tmp/test/y -cmin -100 -delete
    find /tmp/test/y -cmin -100 -ok rm -fr '{}' ; #需要询问
    find /tmp/test/y -cmin -100 -exec rm -fr '{}' ;
    

    10.查找/var/log目录下为文件类型且在10分钟内被修改过的文件,并列出

     find /var/log -type f -cmin -10 -exec ls -l '{}' ;
    

    11.查找/var/log下的在四天内被修改过的文件并把它们的长格式信息保存至/tmp/test/abc

    find /var/log -ctime -4 -fls /tmp/test/abc
  • 相关阅读:
    unity5, Configurable Joint: Anchor, Connected Anchor, Auto Configure Connected Anchor
    unity physics joint
    unity camera aspect
    spineRuntTime for cocos2dx v3,attack播完后回到idle
    spineRunTime for cocos2dx v3 中动画播完删除animation
    spine 2.1.27 Pro 叠加方式(Blending)
    unity5 静态和动态cubmap
    INFINITY的一个坑
    Linux下配置MySQL需要注意的几点
    更换网页tab标题图标
  • 原文地址:https://www.cnblogs.com/zhangpf/p/5656583.html
Copyright © 2020-2023  润新知