2.3.2我是最强的找文件:find2.3.2.1find查找常用命令示例find/-name'wfy.txt'#从根目录开始查找文件wfy.txt查找。-name'*fy.txt'#在当前目录下,搜索后缀为fy.txt#“.”的文件表示当前目录,“*”表示任意长度的字符find/-typef-size+500M#从根目录开始查找,500M以上的文件#/:根目录#.:当前目录#-typef:f为普通文件类型,f改为d为目录文件,l为符号链接文件,-type还有其他参数,这里不一一列出#-size+500M:500MB以上#一般是磁盘空间不够,删除垃圾文件时会用到这个命令。文件,请注意k是小写的。寻找。-typef-mtime-30#查找当前目录下30天内修改过的文件#-mtime:表示修改时间,最常用,类似的参数有-atime,-ctime#-atime:表示访问时间,检查就算过去了#-ctime:文件状态变化时间#-30:代表30天内,30是n,数字自己填#+30:30天前#30:找到/var/log/-mtime+onthe30daysfromnow30-name'*.log'#在指定目录/var/log/中查找30天前的日志文件find/etc!-typef#查找/etc目录下不是普通文件的文件#"!":感叹号,采取反查找/etc!-typel-mtime-30#查找/etc目录下非符号链接且30天内修改过的文件find/etc-maxdepth1!-typel-mtime-30#查找/etc一级目录下不是符号链接文件,且30天内被修改过的文件#-maxdepth:前面学过,指定目录层级,-maxdepth1表示第一层,-maxdepth2表示扩展到第二层-maxdepth可能有点难理解,我截个例子图2.3.2.2使用find组合命令:统计和删除基本常用的find命令已经说明,说一个运维中可能常用的组合命令,使用find删除N个文件或天数以上的日志。先用wc-l统计日志条数,然后删掉看find/-name'*.log'-mtime+300|wc-l#从根目录开始查找300天前的日志文件,统计第几个#"|":管道字符,将之前查找到的数据作为以下命令的输入源第一种删除方式:-execfind/-name'*.log'-mtime+300-execrm{}\;#找到30个用-exec加rm删除几天前的日志文件#然后用上面的命令再次查看find/-name'*.log'-mtime+300|wc-l第二种删除方式:-okfind/-name'*.log'-mtime+200-okrm{}\;#-ok:要求删除,y删除,n不删除,回车不删除默认删除第三种删除方式:依次执行xargs查看结果find/-name'*.log'-mtime+100|wc-lfind/-name'*.log'-mtime+100|xargsrm-f#xargs:命令传递参数过滤器,与管道符“|”一起使用,将上一个命令传递给下一个命令。使用find/-name'*.log'-mtime+100|wc-l2.3.2.3结合find和xargs查看50天前的日志文件查看详情。查找/-name'*.log'-mtime+50|xargsls-l#使用xargs+ls-l命令查看文件的详细属性并删除50天前的文件mkdir/logback#在根目录下创建/logback文件夹find/-name'*.log'-时间+50|xargs-imv{}/logback#将50天前的所有日志文件移动到/logback文件夹下#xargs-i+{},找到之前找到的文件作为mv命令的参数执行ls-l/logback#查看/logback下所有文件的详细信息命令执行,文件多会导致效率低下;xargs,是一次性的,效率高速率高,可以使用-n参数控制传输文件数。区别二:-exec,文件名中的空格等特殊字符也照常处理;xargs,需要对特殊文件名(如带空格的文件名)进行处理。处理方法(find.-name"*edu"-pringt0|xargs-0ls-l)验证区别一,示例如下:find/logback-name'*.log'-execechoyaomaomao{}\;find/logback-名称“*.log”|xargsechoyaomaomao可以看到每次使用-exec获取一个文件输出一次,xargs只输出一行。xargs也可以通过-n参数来控制每次输出的文件数find/logback-name'*.log'|xargs-n5echoyaomaomao可以看到每行输出5个参数(文件名),不足的行就剩输出了。验证区别2,示例如下:touchyaomaomao.txt;touch"yaomaomaocentOS7";llyaomaomao*#提示:使用";"分号一次执行多个命令#注意:查看和创建带空格的文件使用引号时,查找.-name"yaomaomao*"-execls-lh{}\;#正常查找find.-name"yaomaomao*"|xargsls-lh#可以看到使用这个命令是找不到的去那个文件或者目录下找。-name"yaomaomao*"-print0|xargs-0ls-lh#普通搜索其实find有很多强大的功能。拍两张图就知道了。这本书是我开头推荐的《核心系统命令实战》。公众号注册晚,没有评论功能,所以一般用来发长帖。知识星球相当于一个技术朋友圈。大家有什么问题可以提问和讨论。欢迎关注我的公众号:姚猫猫的博客欢迎来到我的知识星球,现在免费。知识星球:姚猫猫的私家花园
