zoukankan      html  css  js  c++  java
  • 文件查找

    文件查找

    find命令的基本语法

    命令+路径+选项+表达式+动作

    find查找分类

    1.以名字查找文件

    -name
    在/etc/下找到以.sh结尾的文件
    [root@oldboyedu ~]# find /etc/ -name '*.sh'
    [root@oldboyedu ~]# find /etc/ -name '*.sh' -ls
    

    2.文件类型查找

    文件类型

    ​ d:目录(directory)
    ​ f:文件(file)
    ​ c:字符设备
    ​ b:块设备
    ​ l:软链接文件
    ​ s:套接字文件(socket)
    ​ p:管道文件

    -type
    查找/etc/目录下所有带conf的文件
    [root@oldboyedu ~]# find /etc/ -type f -name '*conf*'
    	
    查找当前系统中,所有的管道文件
    [root@oldboyedu ~]# find / -type p
    /run/systemd/inhibit/1.ref
    /run/systemd/sessions/1.ref
    /run/systemd/initctl/fifo
    [root@oldboyedu ~]# find / -type p -ls
    39101    0 prw-------   1 root     root            0 Jul  4 17:18 /run/systemd/inhibit/1.ref
    41084    0 prw-------   1 root     root            0 Jul  4 17:18 /run/systemd/sessions/1.ref
    21199    0 prw-------   1 root     root            0 Jul  4 17:18 /run/systemd/initctl/fifo
    

    3.根据文件大小查找

    -size
    -a:多个条件同时满足
    -o:或者,多个条件有一个满足即可
    !:去反
    + :大于
    - :小于
      :等于
    
    	查找/目录下大于1G的所有文件
    	[root@oldboyedu ~]# find / -size +1G
    	查找一个脚本,名字带con
    	[root@oldboyedu ~]# find / -name '*.sh' -name '*con*'
    	查找一个脚本,名字不带con
    	[root@oldboyedu ~]# find / -name '*.sh' ! -name '*con*'
    

    4.根据时间查找文件

    -mtime:
    		+n:寻找n天之前(当天的不算)
    		-n:查找n天内的文件(当天的文件算在内)
    		 n:查找第n的文件(当天的不算)
    //创建测试文件
    [root@zls ~]# for i in `seq -w 30`;do date -s  201802$i && touch file-$i;done
    
    //查找7天以前的文件(不会打印当天的文件)
    [root@zls ~]# find ./ -iname "file-*" -mtime +7
    
    //查找最近7天的文件,不建议使用(会打印当天的文件)
    [root@zls ~]# find ./ -iname "file-*" -mtime -7
    
    //查找第7天文件(不会打印当天的文件)
    [root@zls ~]# find ./ -iname "file-*" -mtime 7
    
    //本地文件保留最近7天的备份文件, 备份服务器保留3个月的备份文件
    find /backup/ -iname "*.bak" -mtime +7 -delete
    find /backup/ -iname "*.bak" -mtime +90 -delete
    

    5.根据用户来查找文件

    	-user:指定文件属主用户
    	-group:指定文件属组
    	-nouser:查找没有属主的文件
    	-nogroup:查找没有属组的文件
    	
    	[root@oldboyedu ~]# find /home/ -user zls -a -group 
    	[root@oldboyedu ~]# find /home/ -user zls -group root
    	[root@oldboyedu ~]# touch /home/123.txt
    	[root@oldboyedu ~]# chown zls.root /home/123.txt 
    	[root@oldboyedu ~]# find /home/ -user zls -group root
    	//查找没有属主
    	[root@zls ~]# find /home -nouser
    	//查找没有属组
    	[root@zls ~]# find /home -nogroup
    
    	[root@oldboyedu ~]# find /home -nogroup -nouser
    
    注意:$() 和 `` :将引起 来的部分当成一个命令执行。
    

    6.根据权限查找

    -perm
    	644 :精确查找
    	-644:模糊查找
    

    find处理动作

    动作 含义
    -print 打印查找到的内容(默认)
    ls 以长格式显示的方式打印查找到的内容
    -delete 删除查找到的文件(仅能删除空目录
    -ok 后面跟自定义shell命令(会提示是否操作
    -exec 后面跟自定义shell命令(标准写法-exec ;)
    //打印查询到的文件
    [root@zls ~]# find /etc -name "ifcfg*"
    [root@zls ~]# find /etc -name "ifcfg*" -print
    [root@zls ~]# find /etc -name "ifcfg*" -ls
    
    //拷贝文件
    [root@zls ~]# find /etc -name "ifcfg*" -exec cp -rvf {} /tmp ;
    
    //-ok会不断提示
    [root@zls ~]# find /etc -name "ifcfg*" -ok cp -rvf {} /tmp ;
    
    //删除文件
    [root@zls ~]# find /etc -name "ifcfg*" -exec rm -f {} ;
    [root@zls ~]# find /etc -name "ifcfg*" -delete
    

    find结合xargs

    #xargs将查找到结果一个一个的处理
    [root@zls ~]# touch file.txt
    [root@zls ~]# find . -name "file.txt" |xargs rm -f
    [root@zls ~]# find . -name "file.txt" |xargs -I {} cp -rvf {} /var/tmp
    
  • 相关阅读:
    《当程序员的那些狗日日子》(二十七)大项目
    《当程序员的那些狗日日子》(四十二)内心的挣扎
    《当程序员的那些狗日日子》(二十一)加班,加班
    《当程序员的那些狗日日子》(三十四)人事变动
    《当程序员的那些狗日日子》(五十二)同学情与差距
    《当程序员的那些狗日日子》(四十四)是办公室还是牢房
    《当程序员的那些狗日日子》(四十七)躁动的空气
    《当程序员的那些狗日日子》(三十七)黯然离去
    《当程序员的那些狗日日子》(十六)告别
    《当程序员的那些狗日日子》(二十三)死在了今天的晚上
  • 原文地址:https://www.cnblogs.com/1naonao/p/11135258.html
Copyright © 2011-2022 走看看