1、语法格式
find 路径 -参数 动作 参数:最核心的,参数众多 其option常用参数详解如下:-name filename #查找名为filename的文件; -type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件; -size n[c] #查长度为n块[或n字节]的文件; -perm #按执行权限来查找; -user username #按文件属主来查找; -group groupname #按组来查找; -mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前; -atime -n +n #按文件访问时间来查找文件; -ctime -n +n #按文件创建时间来查找文件; -mmin -n +n #按文件更改时间来查找文件,-n指n分钟以内,+n指n分钟以前; -amin -n +n #按文件访问时间来查找文件; -cmin -n +n #按文件创建时间来查找文件; -maxdepth #查找目录级别深度。
-name 名称
find . –name “jf*”-type 类型
find .-name “jf*” –type f #查找文件 find .-name “jf*” –type d #查找目录组合查找:
find .-name “jf*” –type f -name jf1.txt #只找jf1.txt find .-name “jf*” –type f ! -name jf1.txt #除了jf1.txt-size 文件大小
M: 以MB为单位 K:以KB为单位
find . -name “*.tar.gz” -size +200M #大于200M find . -name “*.tar.gz” -size 200M #等于200M find . -name “*.tar.gz” -size -200M #小于200M find . -name “*.tar.gz” -size -200M -size +100M #100M-200M 之间 find . -name “*.tar.gz” -size -200M -size +100M -type f #文件 find . -name “*.tar.gz” -size -200M -size +100M -type d #目录
-perm 文件权限
find . –type f –perm 755 #目录权限755,umask :默认是022
目录默认是777:创建目录-umask 777-022 = 755 文件默认是666:创建文件-umask 666-022 = 644-user 根据属主查找
-group 根据属组查找
find . –user nginx find . –group nginxstat文件属性查看命令
-mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前;查找30天前被修改过的文件:
find . –mtime +30 #默认为d天数 改变文件时间:touch 文件名示例:删除30天前的日志
查找log结尾,排除access.log,error.log,3天前修改过,大于20M find . –name “*.log” ! –name access.log ! –name error.log –mtime +3 –size +20M 如何删除以上结果: 测试 for i in $( find . –name “*.log” ! –name access.log ! –name error.log –mtime +3 –size +20M);do echo $i ; done 执行删除: for i in $( find . –name “*.log” ! –name access.log ! –name error.log –mtime +3 –size +20M);do rm –rf $i ; done 其他方法:-exec 命令 -参数 {} \;
-exec :类似 | ,与find组合 命令 –参数:rm -rf ,参考各命令使用,如使用cp则为: -exec cp {} /tmp/ \; #{}表示要操作的文件 {} :表示find 的结果,里面不能写内容 \; :结束符 例:查找当前目录文件,然后复制到/tmp/1目录下 find . -type f -name "OpenIPMI*" -exec cp {} /tmp/1/ \; 前面是查找结果,后面是操作动作。
示例2:网站发布目录被黑了,权限全是777,怎么恢复
要点:目录权限 755 文件权限 644 目录:\. 排除. \表示转义 find .-type d ! –anme \. –exec chmod 755 –R {} \; 文件 find .-type f ! –anme \. –exec chmod 644 –R {} \; -maxdepth #查找目录级别深度。 只查找当前目录的文件夹 find . –maxdepth 1 –type d ! –name \. –maxdepth 1 :要写在.号后面,1表示一层 排除隐藏目录 find . –maxdepth 1 –type d ! –name \. ! –name “.*” 需求升级:要求创建以find 查找出来的结果为目录名 find . –maxdepth 1 –type d ! –name \. ! –name “.*” –exec mkdir –p /tmp/{} \; xargs 使用方法 find . -name “*.txt” -type d |xargs rm -rf 复制文件: find . -name “*.txt” -type f |xargs -I {} cp {} /tmp/ |xargs –I {} 表示把find 的结果暂存在{} 里总结:-exec 与 |xargs区别 -exec 是一条一条执行 |xargs 是把所有结果存到内存中,统一操作,生产环境文件过多不建议使用。 查找第一级目录,并以目录名在其他位置批量创建 find . -maxdepth 1 -type d ! -name \. -exec mkdir -p /tmp/{} \;