Linux基础:文件搜索find的语法比较简单,只有几个常用的参数,如-name、-type、-ctime等。初学者可以直接看第二部分的例子。如果需要详细了解参数说明,可以参考find的帮助文档。find的语法如下:find(option)(parameter)常用例子按文件名搜索列出当前目录及其子目录下的所有文件find。在当前目录中查找名为11.png的文件find.-name"11.png"在当前目录中查找所有jpg文件find.-name"*.jpg"在当前目录find中查找jpg文件和png文件。-name"*.jpg"-o-name"*.png"查找当前目录不以png结尾的文件find.!-name"*.png"根据正则表达式查找备注:正则表达式比较复杂比最初想象的要多,并且支持多种类型。可以参考这里查找当前目录下文件名全是数字的png文件。find.-regex"\./*[0-9]+\.png"根据路径搜索找出当前目录下路径中包含所见即所得的文件/路径。find.-path"*wysiwyg*"按文件类型搜索以按-type过滤文件类型。f普通文件l符号链接d目录c字符设备b块设备s套接字pFifo例如在路径find.-typef-path"*wysiwyg*"中查找包含wysiwyg的文件来限制搜索深度找到当前目录目录中的所有png,不包括子目录。find.-maxdepth1-name"*.png"对应mindepth选项。find.-mindepth2-maxdepth2-name"*.png"根据文件大小通过-size过滤文件大小。支持的文件大小单位如下b-块(512字节)c-字节w-字(2字节)k-千字节M-兆字节G-千兆字节例如,查找当前目录中文件大小超过100M的文件。find.-typef-size+100M根据访问/修改/更改时间支持以下时间类型。访问时间(-atime/day,-amin/minute):用户最后一次访问时间。修改时间(-mtime/day,-mmin/minute):文件最后一次被修改的时间。更改时间(-ctime/day,-cmin/minute):文件数据元素(如权限等)最后一次被修改的时间。比如找出1天之内修改过的文件find.-typef-mtime-1找出上周访问过的文件find.-typef-atime-7移动log目录下的日志文件一个多星期到/tmp/old_logs。find.-typef-mtime+7-name"*.log"-execmv{}/tmp/old_logs\;注意:{}与-exec选项配合使用,匹配所有文件,然后会替换成对应的文件名。此外,\;用于指示命令的结束。如果不加,会有如下提示find:-exec:noterminating";"or"+"根据权限通过-perm实现。例如查找当前目录下权限为777的文件find.-typef-perm777查找当前目录下权限不是644的php文件find.-typef-name"*.php"!-perm644查找文件根据文件属主属主为根文件find.-typef-userroot查找所在组为根文件的文件find.-typef-grouproot找到文件后通过-ok,-exec执行命令。不同的是-ok会在执行命令前进行二次确认,而-exec则不会。看一个实际例子。删除当前目录下的所有js文件。使用-ok的效果如下,删除前有二次确认?findfind.-typef-name"*.js"-okrm{}\;"rm./1.js"?尝试-exec。直接删除find.-typef-name"*.js"-execrm{}\;查找空文件示例如下touch{1..9}.txtcho"hello">1.txtfind.-empty
