目录
一、find基本语法
二、按类型查找
三、按名称查找
四、按大小和时间查找
五、结合逻辑操作符
六、执行操作
七、查找空文件或空目录
八、按权限或拥有者查找
九、限制查找深度
十、多级目录查找示例
十一、查找指定多级路径
十二、高级示例汇总
总结在日常 Linux 开发和运维中,find是一个非常强大的文件搜索工具。除了简单的按文件名查找,它还能按目录、大小、时间、权限,甚至执行批量操作,非常适合多层级目录的管理。本文结合实际案例,带你全面掌握find的高级用法。
一、find基本语法
find [起始路径] [查找条件] [操作]起始路径:要搜索的目录,如果用.表示当前目录。
查找条件:文件名、类型、大小、修改时间等。
操作:可以执行命令,例如-exec或-delete。
二、按类型查找
# 查找所有目录find /path/to/search -type d
# 查找所有普通文件find /path/to/search -type f
# 查找符号链接find /path/to/search -type l
三、按名称查找
# 精确匹配find . -name "test.txt"
# 忽略大小写find . -iname "test.txt"
# 通配符匹配find . -name "*.log"
四、按大小和时间查找
# 大于 100MB 的文件find . -type f -size +100M
# 最近 7 天修改过的文件find . -type f -mtime -7
# 最近 1 小时修改的文件find . -type f -mmin -60
五、结合逻辑操作符
# 查找所有 .txt 或 .log 文件find . \( -name "*.txt" -o -name "*.log" \)
# 查找 .txt 文件且大小 > 1M find . -name "*.txt" -a -size +1M
逻辑操作符:
-a/-and:并且(默认)
-o/-or:或者!/-not:非
六、执行操作
# 删除找到的临时文件find . -name "*.tmp" -type f -delete
# 压缩所有 js 文件find . -name "*.js" -type f -exec gzip {} +
# 使用 + 批量执行,提高效率find . -name "*.log" -type f -exec gzip {} +
七、查找空文件或空目录
# 空文件find . -type f -empty
# 空目录find . -type d -empty
八、按权限或拥有者查找
# 权限为 755 的文件find . -type f -perm 755
# 拥有者为 user 的文件find . -user user
# 属组为 group 的文件find . -group group
九、限制查找深度
# 最多查找两级目录find . -maxdepth 2 -type f
# 从第三级目录开始查找find . -mindepth 3 -type f
十、多级目录查找示例
假设你要查找路径./coze-studio/frontend/packages/common
下的文件或目录:
# 查找所有文件find ./coze-studio/frontend/packages/common -type f
# 查找所有目录find ./coze-studio/frontend/packages/common -type d
# 查找该路径下所有 js 文件find ./coze-studio/frontend/packages/common -type f -name "*.js"
# 限制查找深度,只查当前目录find ./coze-studio/frontend/packages/common -maxdepth 1 -type f
十一、查找指定多级路径
如果你想查找完整路径,例如:coze-arch/coze-design/icons直接用-name是找不到的,应该用-path:# 精确匹配多级路径目录find / -type d -path "*/coze-arch/coze-design/icons"
# 忽略大小写匹配find / -type d -ipath "*/coze-arch/coze-design/icons"
# 查找该目录下的 svg 文件find / -type f -path "*/coze-arch/coze-design/icons/*.svg"
注意:
*表示路径前缀任意层级-path匹配整个路径-ipath忽略大小写匹配
十二、高级示例汇总
# 查找大于 100MB 且最近 7 天修改的日志文件并压缩find /var/log -type f -name "*.log" -size +100M -mtime -7 -exec gzip {} +
# 删除 ./coze-studio/frontend/packages/common 下所有临时文件find ./coze-studio/frontend/packages/common -type f -name "*.tmp" -delete
# 查找指定多级目录并查看详细信息find / -type d -path "*/coze-arch/coze-design/icons" -exec ls -lh {} \;总结-name:匹配单个文件或目录名-path/-ipath:匹配完整路径,支持多级目录-type:限制类型(文件、目录、符号链接等)
-size/-mtime/-mmin:按大小或修改时间筛选-exec/-delete:批量操作-maxdepth/-mindepth:控制递归深度逻辑操作符-a/-o/!:复杂条件组合通过这些组合,可以非常灵活地管理和查找 Linux 系统中的文件和目录,尤其是在多级路径和大型项目中。
到此这篇关于Linux find命令的高级用法和多级目录查找实战的文章就介绍到这了,更多相关Linux find命令内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:Linux find命令如何根据时间筛选出文件进行删除Linux查找命令@which、find的使用方式Linux find 命令完全指南及核心用法Linux find命令及实用示例详解Linux中使用locate和find进行不区分大小写的文件搜索Linux命令定位与查找之which、whereis和find的用法示例详解linux 文件管理命令之dirname \ find \ finds \ in \ indir详解
