文件查找

目录

文件查找

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值