1、目录层级、文件类型、文件名过滤查找
find /data -maxdepth 1 -type f -name "*.sh"
find /data -maxdepth 1 -type d -name "code"
2、逻辑操作符,与-a、或-o、非!
find /data -name "*.sh" -a -name "*test*"
find /data -name "*.sh" -o -name "*test*"
find /data ! -name "*.sh"
3、-path DIR -prune排除DIR目录,最后排除条件放前面
find /data -maxdepth 1 -path /data/code -prune -o -type d -print
伪代码逻辑如下:
find /data -maxdepth 1
if -path /data/code then
-prune(排除)
elif -type d
-print(打印)
4、-mtime +天数 按修改时间超过n天来过滤文件目录
5、查找文件并删除
自带-delete参数 :放在最后面,不然会直接删除目录下所有文件,不考虑匹配条件
-exec rm -rf {} ; :{}会自动替代为查找结果
| xargs -I {} -L 10 rm -rf {}:-I指定通道结果替代符为{},-L指定每次操作的文件数,同时操作大量文件rm命令会报错
6、通过inode删除特殊字符文件
find ./* -inum inode号 -delete
ll -i 文件名 可以看到inode号为第一列
7、时间查找、定期过期文件综合用法
/bin/find /tmp/ -maxdepth 1 -mtime +30 -type d -exec /bin/rm -rf {} \;
/bin/find /data/ -maxdepth 1 -path /data/code -prune -o -type f -mtime +7 -name "*.sh" -print | xargs -I {} /bin/rm -rf {};
/bin/find /usr/local/backups -mtime +10 -name "*.log" | xargs rm -rf
转载:https://blog.csdn.net/IT__killer/article/details/104520623
查看评论