解决方案:使用unix命令find
find 实用程序递归地向下遍历每个路径的目录树
列出,评估一个表达式(由'primaries'和
'操作数')在
树中的每个文件。
- 您可以通过使用
正则表达式查询、文件类型、大小阈值、深度
子树、组、所有权、时间戳、修改/创建日期等维度。
- 此外,您还可以使用运算符并组合查找请求,例如
或/不/等...
传统的公式是:
find <path> -flag <valueOfFlag>
简单示例
1.按名称查找 - 从我当前的位置子树层次结构中查找所有package.json。
find . -name "package.json"
2.按名称和类型查找 - 从所有文件系统中查找所有node_modules 目录(从根层次结构开始)
sudo find / -name "node_modules" -type d
复杂示例:
更多有用的例子可以展示标志选项和操作符的力量:
3.正则表达式和文件类型 - 仅在我的应用程序位置查找所有 javascript 控制器变体名称(使用正则表达式)javascript 文件。
find /user/dev/app -name "*contoller-*\.js" -type f
-type f 表示与正则表达式相关的文件-name 与控制器字符串的任何变体以及最后带有.js 的破折号
4.深度-在应用目录不超过3维(app/../../)中查找所有路由模式目录 .. 只是,没有更深)
find app -name "*route*" -type d -maxdepth 3
-type d 表示与正则表达式相关的目录-name 到路由字符串-maxdepth 的任何变体,使查找器专注于3 个子树深度而不是更多<yourSearchlocation>/depth1/depth2/depth3)
5.文件大小、所有权和 OR 运算符 - 查找 root 用户拥有的所有名称为“sample”或“test”的大于 1 Mega 且小于 5 Mega 的文件。 p>
find . \( -name "test" -or -name "sample" \) -user root -size +1M -size -5M
-size 阈值表示大于 (+) 和小于 (-) 之间的范围-user 表示文件所有者-or 运算符过滤查询两个正则表达式匹配
6.Empty Files - 查找文件系统中的所有空目录
find / -type d -empty
7.时间访问、修改和创建文件 - 查找10天内在目录中创建/修改/访问的所有文件
# creation (c)
find /test -name "*.groovy" -ctime -10d
# modification (m)
find /test -name "*.java" -mtime -10d
# access (a)
find /test -name "*.js" -atime -10d
8.修改大小过滤器 - 查找在一周前到 3 周前完全修改且小于 500kb 的所有文件,并将其大小显示为列表
find /test -name "*.java" -mtime -3w -mtime +1w -size -500k | xargs du -h