Linux三剑客:find 查找

一、介绍

遍历查找,从根开始从磁盘上查找文件,效率很低,功能强大。

相当于windows里边的“搜索”。

遍历查找,从根开始查找。 

语法:

find     查找路径          选项1 【参数1】          选项2 【参数2】    .....

二、用法

(一)按名字查找:点名

-name      按名字查找

(1)按名字查找:

[root@oldboy ~]# find    /    -name    "hosts"

/etc/hosts

/tmp/etc/hosts

/opt/etc/hosts

(2)按名字模糊查找        *表示所有

[root@oldboy ~]# find     /etc/     -name     "h*ts"

/etc/hosts

[root@oldboy ~]# find      /etc/     -name     "*.conf"

/etc/resolv.conf

/etc/pki/ca-trust/ca-legacy.conf

/etc/yum/pluginconf.d/fastestmirror.conf

/etc/yum/pluginconf.d/langpacks.conf

/etc/yum/protected.d/systemd.conf

(二)按类型查找:-type

Linux一般不按扩展名分文件。

类型包括:f    d    l    c    b    s

b       block (buffered) special                   块设备:硬盘光驱

c       character (unbuffered) special         字符设备

d       directory                                           查找目录

f        regular file                                        查找文件

l        symbolic link                                     软连接(相当于Win快捷方式)

s       socket                                                和应用程序之间通信有关

[root@oldboy ~]# find     /      -name      "hosts"

/etc/hosts

/tmp/etc/hosts

/opt/etc/hosts

查找文件,并且名字为hosts

[root@oldboy ~]# find     /     -type    f     -name     "hosts"

/etc/hosts

/tmp/etc/hosts

/opt/etc/hosts

查找目录,并且名字为hosts

[root@oldboy ~]# find    /     -type   d     -name      "hosts"

[root@oldboy ~]# mkdir    hosts

[root@oldboy ~]# find     /    -type   d      -name       "hosts"

/root/hosts

(三)组合查找

find默认就是取交集:(-a)and

并集: (-o)or

例:查文件类型为文件,并且名字为hosts

[root@oldboy ~]# find     /    -type    f    -a    -name    "hosts"

/etc/hosts

/tmp/etc/hosts

/opt/etc/hosts

[root@oldboy ~]# find    /    -type    f     -name    "hosts"

/etc/hosts

/tmp/etc/hosts

/opt/etc/hosts

并集:查找名为hosts,或者类型为d,并且为oldboy

find   /    -name    "hosts"    -o    -type d    -name   "oldboy"

/etc/hosts

/root/hosts

/tmp/oldboy

/tmp/etc/hosts

/home/oldboy

/opt/oldboy

/opt/etc/hosts

/oldboy

取反:!       查找名字不是file1

[root@oldboy ~]# mkdir   /   data   -p

[root@oldboy ~]# touch   /data/file{1..3}

[root@oldboy ~]# find    /data    -name    "file1"

/data/file1

[root@oldboy ~]# find    /data    !    -name    "file1"

/data

/data/file2

/data/file

(四)按大小查找

-size    +1M                    #大于1M 

-size    1M                      #1M 

-size    -1M                      #小于1M 

其他单位k   G

[root@oldboy ~]# find    /etc    -size    +1M

/etc/selinux/targeted/active/policy.kern

/etc/selinux/targeted/contexts/files/file_contexts.bin

/etc/udev/hwdb.bin

(五)-mtime modify     按修改时间查找

-atime 按【访问 access】时间查找(很少用)

-ctime 按【改变change】时间查找(很少用)

-mtime    +7                   #7天以前的

-mtime     7                    #第7天

-mtime    -7                    #最近7天

[root@oldboy ~]# find    /data    -type    f    -name    "file*"    -mtime    +7

/data/file19

/data/file20

/data/file21

(六)-perm           按权限(了解)

[root@oldboy data]# mkdir   oldboydir

[root@oldboy data]# find    /data     -perm   755

/data

/data/oldboydir

(七)-user              按用户(了解)

[root@oldboy data]# chown    oldboy    oldboydir

[root@oldboy data]# find    /data    -user    oldboy

/data/oldboydir

三、对找到的东西进行处理

1.   -exec         执行动作

find      /data     -name    "file*"    -mtime +7    -exec     rm    -f {} \;

原理:一个一个删,效率低

rm -f /data/file01

rm -f /data/file02

rm -f /data/file03

.....

2.    xargs          分组

-n 分组

[root@oldboy data]# seq 10 >oldboy.txt

[root@oldboy data]# xargs -n 3 <oldboy.txt

1 2 3

4 5 6

7 8 9

10

-i 可以让后面的{}接收搜索到的内容

find    /data    -name    "file*"    -mtime    +7|xargs    rm    -f       #简写

find   /data   -name   "file*"   -mtime   +7|xargs   -i   rm   -f   {}     #完整写法

原理:一起删,效率更高

rm    -f       file01 file02 ...file30                    #一条命令

[root@oldboy ~]# find /data -name "file*" -mtime -7|xargs rm -f

[root@oldboy ~]# ls /data

file23

误区:不加xargs

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RootZY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值