您的位置:首页 > 运维架构 > Linux

find与逻辑关系运算

2017-07-30 21:52 211 查看

1. find命令的简单介绍

find命令是linux系统中的一项搜寻命令,其有着强大的功能,不经支持传统正则表达式,而且还支持通配符的使用。

[root@zhaoyang ~]# find [PATH] [option] [action]


以上是该命令的格式要求。

-uid n :n 为数字,这个数字是使用者的帐号 ID,亦即 UID 。

-gid n :n 为数字,这个数字是群组名称的 ID,亦即 GID。

-user name :name 为使用者帐号名称。

-group name:name 为群组名称。

-nouser :寻找文件的拥有者不存在的文件。

-nogroup :寻找文件的拥有群组不存在的文件!

当然,以上只是find命令中使用较为简单明了的选项,大家可以通过简单的例子验证一下。

介绍完基本的选项,其实find命令还有较多复杂的选项,例如关于以文件大小进行搜索(-size)和以修改时间进行搜索(主要为-mtime)的选项,其设置的内容确实需要进一步的学习才能正确给出策略,也请各位进一步查询帮助文档学习,我们这次要进行研究的重点是其逻辑关系运算方面的运用。

2. find中逻辑关系的简单介绍

逻辑关系有三种

与 -a

或 -o

非 -not,!

下面先给出各项的使用语法

find -user zy -a -group zy


查找用户名为zy并且所属组为zy的文件

find -user zy -o -user zhaoyang


查找用户名为zy或zhaoyang的文件

find -not user


查找用户名不是user的文件

3. 逻辑关系优先级别

上面都是一些单一的逻辑关系,已经给出其基本的用法,但有些时候,简单的逻辑关系很难筛选出我们所需要的结果,我们往往需要将逻辑运算符相结合,构成较复杂的运算。

说到复杂的组合运算,那么一定要注重运算的过程,也就是运算的优先级,只有了解了正确的优先级,才能给出正确的策略解决问题。

[root@localhost ~]# cd /app
[root@localhost app]# touch wenben1
[root@localhost app]# touch wenben2
[root@localhost app]# touch wenben3


如上我们在/app文件夹中创建出wenben1、wenben2、wenben3三个文件

[root@localhost app]#find -not -name wenben1 -a -name wenben2
./wenben2
[root@localhost app]# find -not \( -name wenben1 -a -name wenben2 \)
/app/.shiyan.swp
/app/.yuan.swp
/app/.wenben.swp
/app/.wenben.swo
/app/.shiyan.swo
/app/.shiyan.swn
/app/wenben1
/app/wenben2
/app/wenben3


我们都知道,()内的运算式优先级是最高到,但显然,上边两式得到的结果并不相同,在通过国际分析式子一,发现其先运算了-not,然后才运算了-a运算。

[root@localhost app]# find  -name wenben1 -a -name wenben2 -o -name wenben3
./wenben3
[root@localhost app]# find  -name wenben1 -a \( -name wenben2 -o -name wenben3 \)


观察上列代码,得知两代码因()将-o优先级提前而导致了结果的不同,从而证实了“与”的优先级高于“或”。

结论:find中逻辑运算优先级为:()>非>与>或

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  正则表达式 linux