查找到文件之后的处理动作
例如:找出来系统中比较大超过10G的并且存放时间超过一年的log文件并删除
find / -name ".log" -size +10G -mtime +365 -ok mv {} /tmp/del \;
只要有ok了,就必须要加 反斜杠和分号 \; 进行结束
ok这个有个麻烦事就是有100个文件就要问100次,所以使用-exec,非交互方式,问都不带问的,比较危险
所以不但要找到这些文件,还要处理这些文件
事实上,find找到文件之后就默认隐藏了一个处理动作 -print
-print:默认的处理动作,显示至屏幕
-ls:类似于对查找到的文件执行“ls -l”命令
-fls file:查找到的所有文件的长格式信息保存至指定文件中,相当于 -ls > file
-delete:删除查找到的文件,慎用!
-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认
-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令
{}: 用于引用查找到的文件名称自身
范例
#备份配置文件,添加.orig这个扩展名
find -name ".conf" -exec cp {} {}.orig \;
#提示删除存在时间超过3天以上的joe的临时文件
find /tmp -ctime +3 -user joe -ok rm {} \;
#在主目录中寻找可被其它用户写入的文件
find ~ -perm -002 -exec chmod o-w {} \;
#查找/data下的权限为644,后缀为sh的普通文件,增加执行权限
find /data –type f -perm 644 -name "*.sh" –exec chmod 755 {} \;