首页/系统/Linux 运维命令速查/场景:导出目录结构清单
文件与目录76 条

场景:导出目录结构清单

交接、评审、排障时附一份带层级控制的目录结构:tree -L 限深度,排除依赖目录避免噪音。

Linux 运维命令速查系统更新于 2026-10-13

为什么要导出目录结构

交接、评审、排障时附一份目录结构清单,比截图或口头描述清楚得多。tree 用 -L 限制深度、-I 排除依赖与产物目录,把结果重定向成文件;机器上没装 tree 时用 find -maxdepth 配合 -not -path 兜底。关键在于控制信噪比:不做深度限制的完整结构在真实项目里动辄上万行,没人会看,也容易泄露不该外传的目录名。

基本信息

适用平台Linux/macOS(tree 需要安装,包名通常就是 tree)
权限要求普通用户;无读权限的目录会输出提示
常用选项-L 深度、-I 排除模式、-d 只列目录、-a 含隐藏、--noreport 不打印统计
兜底方案find 路径 -maxdepth N -not -path 模式
搭配建议配合 du --max-depth=1 附上各目录占用体积

典型使用场景

  • 项目或数据目录交接时附结构清单
  • 评审时说明部署目录布局与各目录职责
  • 排查文件组织问题:同名目录散落在多处
  • 梳理备份与同步策略时确认要排除哪些目录
  • 作为交付文档或工单的附录贴出

常用示例

常用示例
tree -L 3 -I 'node_modules|.git|dist|venv' /data/app > structure.txt   # 限深度并排除噪音目录
tree -L 2 -d /data/app                 # 只看目录层级,输出更短
tree -L 2 -a --noreport /etc/myapp > myapp-tree.txt   # 含隐藏文件、不带末尾统计
# 没有 tree 时的等价写法:
find /data/app -maxdepth 3 -not -path '*/.git/*' -not -path '*/node_modules/*' | sort > structure.txt
du -h --max-depth=1 /data/app | sort -h   # 附带一级目录占用,交接信息量更大
tree -L 2 /data/app | head -n 40          # 先看前若干行评估规模,再决定是否加深

选项读法

选项作用注意
-L N限制递归深度先 -L 2 看规模,再决定是否加深
-I 模式排除匹配的目录或文件(竖线分隔多个)排除 .git、依赖与构建产物目录
-d只列目录关注组织结构时输出更短更清晰
-a包含隐藏文件敏感文件名会进清单,交付前必须过滤
--noreport不输出末尾的统计行粘贴进文档时更干净
-l跟随软链接链接多时可能输出爆炸,甚至遇到循环
tree 默认不跟随软链接(只显示链接本身),需要看链接指向内容时加 -l;目录里存在互相指向的链接时要特别小心,避免输出量失控。
清单里可能出现 .env、证书、密钥与备份文件名。对外交付或贴到工单前先自查一遍,必要时排除这些路径,避免把内部信息顺带泄露出去。

易错点

  • 输出目录里含敏感文件名(.env、证书、备份文件):交付前必须过滤,否则属于信息泄露
  • 超大项目不加深度限制直接导出:清单巨大没人看,先 -L 2 评估规模再决定
  • 用 find 兜底时忘记排除 .git 与依赖目录:输出塞满噪音,可读性远不如 tree
  • 在有循环软链的目录上加 -l:输出量可能指数级膨胀,需先确认链接结构

数据来源与参考

  • man 1 tree(tree 官方手册)
  • man 1 find(GNU findutils 手册)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌