Linux环境最常用的命令之一是find,这里把一些稍微进阶的用法整理一下
命令格式
find path -option [ -print ] [ -exec -ok command ] {} \;
高级功能
查找文件后执行命令,其中command是执行的命令,比如ls -l
,{}
会被查找到的文件替换,一般使用转义符号保护,避免被shell扩展,最后以\;
结尾(注意有一个空格)
- exec command \{\} \;
常用场景
- 找到大于100M的日志文件,并删除
find . -size +100M -and -name "*.log" | xargs rm -f
或者
find . -size +100M -and -name "*.log" -exec rm -f \{\} \;
- 删除一周前的日志文件
find . -mtime +7 -and -name "*.log" -exec rm -f \{\} \;
- 查找war和jar文件
find . -name "*.war" -o -name "*.jar"
- 移动一周前的日志到另外一个目录
find . -mtime +7 -and -name "*.log" -exec mv {} ../backup/ \;
- 文件大小设置为0
find . -name all.log -exec sh -c 'echo "" > {}' \;
这里因为命令中有管道命令,所以需要使用sh -c ''的方式来实现