find命令的详细解析
1.find功能
实时查⼯具,通过遍历指定路径完成⽂件查
特点:查速度略慢 (因为是实时查,需要经历每个路径才能完成查)
精确查
可能只搜索⽤户具备读取和执⾏权限的⽬录 (没有权限⽆法进⾏操作)
说到了find这个命令,相应的就会想到locate这个命令
locate这个命令也是具有查的功能,现在我们来了解⼀下两者之间的差别
locate
⾮实时查⼯具,依据数据库完成查
查询系统上预建的⽂件索引数据库
/var/lib/mlocate/mlocate.db
特点:查速度快 (依据数据库查,直接到数据库的⽂件路径中搜寻就可以)
模糊查
⾮实时查 (在系统空闲时更新数据库或者管理员⼿动更新,过程极消耗资源,数据⽆法实时更新)
搜索的是⽂件的全路径,不仅仅是⽂件名
可能只搜索⽤户具备读取和执⾏权限的⽬录
虽然find和locate这俩个命令都具有查的功能,但是查时因为特点有所差别,所以通常使⽤find来进⾏查
2.find命令语法
find [OPTION]... [查路径] [查条件] [处理动作]
查路径:指定具体⽬标路径;不指定则会默认为你所在的当前⽬录
查条件:指定的查标准,例如可以根据⽂件名、⽂件⼤⼩、⽂件类型、⽂件的权限等标准来进⾏查(后⾯会具体讲到) 处理动作:对符合条件的⽂件进⾏具体操作,不进⾏操作则默认输出⾄屏幕
3.find命令选项
现在来具体分析⼀下有关find这个命令的有关选项
⾸先先看⼀下有关查条件的选项
搜索层级
find -maxdepth level 最⼤⽬录深度,指定⽬录为第1级
-mindepth level 最⼩搜索⽬录深度
搜索⽬录深度是相对于当前所在⽬录来说的,现在让我们⾃⼰建个⽬录和⽂件来看⼀下
⾸先,随便进⼊到⼀个不会影响系统的⽬录,我进⼊到/app下,(将/app⾥的所有内容删除防⽌影响接下来的结果显⽰)然后创建⽬录回顾⼀下之前学过的mkdir:mkdir -p 创建多级⽬录; mkdir -v 显⽰创建的具体信息
再创建⼏个⽂件,为了⽅便识别,所以这样创建⽬录和⽂件
好了,现在让我们敲⼀下这俩个有关查⽬录深度的⽂件find命令
看显⽰的搜素结果可以知道,-maxdepth 搜索最⼤⽬录深度也就是说你敲5意味着最多只搜索到第5级⽬录不会再向下搜索了,第5级⽬录是搜索的最终
看这次显⽰的搜索结果,-mindepth 搜索最⼩⽬录深度也就是说你敲2意味着搜索是从第⼆级⽬录开始的,然后搜索到最后⼦⽬录及⼦⽂件
如果我说的这些⼤⽩话你还没有看明⽩,不要着急,你⾃⼰试着创建然后敲⼀下命令就很容易理解了
⽂件名
find -name filename (⽀持使⽤通配符)
find -iname filename 不区分字母⼤⼩写
⽤find命令查⽂件是可以使⽤通配符的
好,现在看⼀下这俩条命令,还是在/app⾥,先把之前创建的都删除,创建⼏个名字类似的⽂件
个⼈觉得这俩条命令很容易理解,所以如果你不理解,还是⼀样,敲⼀下喽
find -links n 链接数为n的⽂件
这⾥的这个链接数指的是硬链接,查看链接数应该⽤stat这个命令,之前有提过,所指⽰的位置就是显⽰的⽂件的硬链接数
好,这⼀次我们就不⾃⼰创建了,我们直接⼀个⽬录然后查看⼀下,我进⼊/tmp下
来随意验证⼀个⽂件看是不是硬链接数是2
find -regex "PATTERN" 以PATTERN匹配整个⽂件路径字符串,⽽不仅仅是⽂件名称
注意,在这个命令选项⾥,匹配的模式。也就是说你想匹配的字符串⼀定是⽂件的路径,⽀持正则表达
看⼀下⽰例
蓝⾊框⾥的就是错误的,错误的地⽅在于字符串模式不是路径,所以没有结果⽽横线的位置就是想要匹配的正则表达的字符串模式inode号
find -inum n 按inode号查
find -samefile name 相同inode号的⽂件
回顾⼀下查看⽂件的inode号⽤到的命令是 ls -i ,stat也能查到,在刚才查看的硬链接数旁边就是哦,圈圈出来的就是
⾄于操作跟硬链接数的模式是⼀样的这⾥就不演⽰了
find查命令的使用所属主、所属组:
find -user USERNAME 查属主为指定⽤户的⽂件
find -group GRPNAME 查属组为指定组的⽂件
find -uid UserID 查属主为指定的UID号的⽂件
find -gid GroupID 查属组为指定的GID号的⽂件
find -nouser 查没有属主的⽂件
find -nogroup 查没有属组的⽂件
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论