Chinaunix首页 | 论坛 | 博客
  • 博客访问: 78944
  • 博文数量: 41
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 434
  • 用 户 组: 普通用户
  • 注册时间: 2017-03-23 09:31
个人简介

天行健,君子以自强不息;地势坤,君子以厚德载物

文章分类
文章存档

2018年(11)

2017年(30)

我的朋友

分类: LINUX

2017-05-01 00:28:21

文本查找:
    grep,egrep,fgrep
文件查找:
    locate:非实时,模糊匹配,查找是根据全系统文件数据库进行的;查找速度快
        updatedb:手动生成文件数据库
    find:实时、精确、遍历指定目录中的所有文件完成查找,速度慢;支持多种查找标准;
        格式:find 查找路径 查找标准 查找到以后的处理动作
            查找路径:默认为当前目录
            查找标准:默认为指定路径下的所有文件
            查找后处理动作:默认为显示
        匹配标准:
            -name 'FILENAME' :对文件名左精确匹配
                例:[root@Ourlab ~]# find /etc -name 'passwd'
                    /etc/passwd
                    /etc/pam.d/passwd
                支持文件名通配:*、?、[]等
                    例:[root@Ourlab ~]# find /etc -name '*passwd'
                        /etc/passwd
                        /etc/security/opasswd
                        /etc/pam.d/passwd

            -iname 'FILENAME':文件名匹配时不区分大小写
            -regex PATTERN:基于正则表达式进行文件名匹配
            
            -user USERNAME:根据属主查找
                例:[root@localhost ~]# find /var -user  mail
            -group GROUPNAME:根据属组查找
                例:[root@localhost ~]# find /var -group  mail
            -uid UID:根据UID查找
            -gid GID:根据GID查找
            
            -nouser :查找无属主的文件
            -nogroup:查找无属组的文件
            
            -type:根据文件类型查找文件
                f:普通文件
                    例:[root@Ourlab ~]# find /tmp -type f
                        /tmp/vmware-root/vmware-apploader-2918.log
                        /tmp/vmware-root/vmware-apploader-3194.log
                d:目录文件
                    例:[root@Ourlab ~]# find /tmp -type d
                        /tmp
                        /tmp/keyring-qtWyIv
                c:字符设备
                b:块设备
                l:链接文件
                p:管道设备
                s:套接字设备
            
            -size:根据文件大小查找文件,默认单位是字节
                [+|-]#:表示大于或小于指定的#字节
                    如:[+|-]#k:表示大于或小于#k.
                #k:表示查找大于(#-1)k,小于等于#k大小的文件
                #M:表示查找大于(#-1)M,小于等于#M大小的文件
                #G:表示查找大于(#-1)G,小于等于#G大小的文件
        组合条件:
            -a:
            -o:
            -not:
            
                例:[root@Ourlab ~]# find /tmp -nouser -a -type d
                例:[root@Ourlab ~]# find ./ -not \( -user user1 -o -user user2 \) #表示查找属主不是user,也不是user2的文件

        根据时间戳查找文件:
            -mtime #:距现在时间刚好#天修改过
            -ctime #:距现在时间刚好#天改变过
            -atime #:距现在时间刚好#天访问过
                例:[root@Ourlab ~]# find ./ -atime 5
                
            -atime [-ctime | -mtime][+|-]#:表示距现在是时间#天前或#天内
                    例:[root@Ourlab ~]# find ./ -atime +5
            -mmin #:距现在时间刚好#分钟修改过
            -cmin #:距现在时间刚好#分钟改变过
            -amin #:距现在时间刚好#分钟访问过
            -amin[-cmin | -mmin][+|-]#:表示距现在是时间#分钟前或#分钟内
        
        -perm MODE
            MODE:精确匹配权限
            /MODE:只要任意一位权限匹配既满足条件
            -MODE:文件权限能完全包含此mode时才能符合条件
    动作:
        -print:显示
        -ls:类似ls -l的形式显示每一个文件的详细信息
        -ok COMMAND {} \; 每一次操作都需要用户确认
        -exec COMMAND {} \;每一处操作不需要用户确认
            例:[root@Ourlab test]# find ./ -perm -004 -exec chmod o+w {} \;
        
课后练习:
1、查找/var目录下属主为root并且属组为mail的所有文件;
[root@localhost ~]# find /var -group  mail
2、查找/usr目录下不属于root、bin或student的文件;
[root@Ourlab ~]# find /usr -not \( -user root -o -user bin -o -user student \)
3、查找/etc目录下最近一周内内容修改过且不属于root及student的用户的文件;
[root@Ourlab ~]# find /etc -atime -7 -a -not \( -user root -o -user student \)
4、查找当前系统上没有属主或属组且最近1天内曾被访问过的文件,并将其属主属组均修改为root;
[root@Ourlab ~]# find / \( -nouser -o -nogroup \) -a -atime -1 -exec chown root:root {} \;
5、查找/etc目录下大于1M的文件,并将其文件名写入/tmp/etc.largefiles文件中;
[root@Ourlab ~]# find /etc -size +1M >> /tmp/etc.largefiles
6、查找/etc目录下所有用户都没有写权限的文件,显示出其详细信息;
[root@Ourlab ~]# find /etc -not -perm /222 -ls
阅读(766) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~