当前位置: 首页 > Linux

Linuxfind命令使用小技巧

时间:2023-04-07 00:33:51 Linux

find是Linux中一个强大的文件查询命令。您可以通过各种过滤条件查询到想要的文件,也可以对查询结果进行进一步的操作。本文介绍几种容易被误用的实用技巧。完整的命令说明可以通过infofind找到。find命令的完整语法如下:find[-H][-L][-P][-Olevel][-Ddebugopts][path...][expression]路径默认为当前目录,默认表达式是-print,即打印搜索结果。在日常使用中,用户主要通过控制参数的表达式部分来达到查询的目的。表达式部分可以包括以下内容:运算符:当有多个查询条件时,默认条件之间的逻辑关系是and-and,逻辑关系可以是with-and,or-or,not-not和括号()优先。通用选项:包括查询深度-dept、查询当前挂载点-mount或-xdev等。测试表达式:查询的过滤条件,是用户控制查询条件的主要部分,也是最复杂的部分.过滤方式包括文件所有者、文件时间范围(访问、状态变化、修改时间)、文件权限、文件名、文件类型等。操作:针对满足过滤条件的操作,包括删除-删除、打印-打印或-print0、执行命令-exec等下面分别介绍操作符、权限过滤-perm、命令执行-exec的技巧。1:运算符and:多个条件表达式之间,默认为AND运算,-a和-and也表示AND运算。例:#查询名称以abc开头,不符合链接类对象find.-name'abc*'-not-typelfind。-name'abc*'-and-not-typel或:包括-o和-or。示例:#查询名称以abc开头或与链接类对象不匹配find.-name'abc*'-or-not-typelnon:include!并不是。示例:#查询不符合链接类型的对象find.-不是类型lfind。!-typel优先级组合:优先级组合用括号表示,但需要在括号前加\转义,且必须有空格。示例:#查询名称以abc开头,类型为匹配链接或常规文件的对象find.-nameabc*-and\(-typel-or-typef\)两个条件并行:两个条件用逗号分隔,两个条件都求值,但是只有后一个条件返回真,整个表达式才返回真。例如:EXPR1、EXPR2。2:权限过滤-perm过滤查询对象在linux文件系统中的权限,过滤对象包括own,group,other,过滤方式包括rwx或rwx十六进制,十六进制过滤时,只过滤非零位有效的。例子:#查询拥有者有写权限的对象find.-permo=w#在下面的条件下,只有owner位生效,group和other都为0,表示find的参数。-perm200-perm不过滤,除了上面不加前缀的方式,还可以加-或/前缀。无前缀:表示完全匹配,如上-perm200表示只匹配owner权限为w的对象,不匹配owner包含r或x权限的对象。包含其他权限,例如:#匹配拥有者和组有r权限的对象(拥有者和组用户也可以有其他权限)find.-perm-440查找。-perm-o=r,g=rfind。-perm-o+r,g+r#以上查询条件与find价格相同。-perm-o=r-和-perm-g=rfind。-perm/o=r-and-perm/g=r/prefix:inmatchingmodeAnybitset成功匹配对象,对象可以包含其他权限,例如:#匹配具有r权限的对象为自己或组(owner和group用户也可以有其他权限)find.-perm/440查找。-perm/o=r,g=rfind。-perm/o+r,g+r#以上查询条件与find价格相同。-perm-o=r-或-perm-g=rfind。-perm/o=r-or-perm/g=r3:执行命令-exec-exec相当于-ok,表示对查询结果执行其他操作命令。find命令默认执行的命令是-print,即打印查询结果列表。在-exec中,{}占位符用于表示文件名在命令中出现的位置。当执行最后一个命令时,{}将替换为文件名。在-exec中,可以包含单文件命令和多文件命令。每个查询结果都会执行一次单文件命令。当命令以分号;结尾时,表示单文件命令;一条多文件命令是对所有结果一起执行的,但是当命令以加号+结尾时,表示多文件命令。因为+和;是shell中的特殊字符,必须用斜杠转义,即写成\+或\;。#查询名称为abc的对象,并一一删除。寻找。-name'abc*'-execrm{}\;#查询名称为abc的对象并打成压缩包。寻找。-name'abc*'-exectarczvftarget.gz{}\+参考:20AdvancedLinuxFindCommandExamples10LinuxFindExecexamples–AdvancedPartLinux/UNIX:ExamplesoffindcommandtofindfileswithspecificsetspermissionsHowToFindFilesLinux中基于他们的权限根据他们的权限查找文件