Linux系统使用find命令搜索文件时如何忽略指定目录
实现方法
标准语法逻辑
find 使用 -prune 排除指定目录的通用格式为:
find [搜索根路径] \( [排除路径1] -o [排除路径2] -o ... \) -prune -o [原有搜索条件+动作]
适配你的场景的修改后命令
举个例子,你需要排除 /proc、/sys、/run 这三类虚拟文件系统目录(避免搜索无意义的虚拟文件),再加一个自定义的排除目录 /data/cache,修改后的命令如下:
find / \( -path /proc -o -path /sys -o -path /run -o -path /data/cache \) -prune -o -type f -size +100M -exec ls -lh {} \; | awk '{ print $9 "|| Size : " $5 }'
注意事项
- 包裹排除路径的括号前后必须加空格,且括号需要用反斜杠转义,避免被系统shell直接解析导致语法错误
- 多个排除路径之间用
-o(逻辑或)连接 - 若需要匹配通配符格式的排除路径,需要给路径参数加双引号,例如
-path "*/node_modules/*"可以排除所有层级下的node_modules目录
内容的提问来源于stack exchange,提问作者Rick Wohlschlag
相关产品推荐
相关产品推荐

