Linux命令之tree命令

一、tree命令简介

  tree命令是一个用于显示目录结构的命令。它可以以树状图的形式展示指定目录下的所有文件和子目录。这个命令并不是很常用,但是在我们统计某个目录下的目录结构还是非常有用的,如果我们需要完整的复制某个目录的目录结构,但是不负责目录下的文件的时候就需要使用到这个命令。

二、tree命令使用示例

1、查看命令版本

[root@s152 ~]# tree --version
tree v1.6.0 © 1996 - 2011 by Steve Baker, Thomas Moore, Francesc Rocher, Kyosuke Tokoro

2、获取命令帮助

[root@s152 ~]# tree --help

3、查看目录test目录结构

[root@s152 ~]# tree test
test
├── level1-1
│ ├── level2-1
│ ├── level2-2
│ └── level2-3
├── level1-2
│ ├── level2-1
│ ├── level2-2
│ └── level2-3
└── level1-3
├── level2-1
├── level2-2
└── level2-3

12 directories, 0 files

4、仅显示目录完整路径

  如果我们需要递归获取目录下的整个目录结构,就可以使用如下命令,-f表示打印完整路径;-d表示只打印目录,不打印文件;-i表示省略前面的横线。

[root@s152 ~]# tree -fid test
test
test/level1-1
test/level1-1/level2-1

test/level1-3/level2-3

12 directories

5、不打印统计信息

[root@s152 ~]# tree --noreport test
test
├── a.txt
├── level1-1
│ ├── bb.txt
│ ├── level2-1
│ ├── level2-2
│ │ └── ccc.txt
│ └── level2-3

6、打印inode信息

  inodes参数可以用于打印文件和目录的inodes编号,inodes编号一般用于文件名显示乱码的情况下删除文件使用。可以使用命令#find -inum inodes_number -delete 命令删除乱码文件。

[root@s152 ~]# tree --inodes test
test
├── [8576899] a.txt
├── [16851797] level1-1
│ ├── [16878307] bb.txt
│ ├── [25166001] level2-1
│ ├── [ 303089] level2-2
│ │ └── [ 323552] ccc.txt
│ └── [8422822] level2-3

12 directories, 3 files

7、打印时过滤空目录

[root@s152 ~]# tree --prune test
在这里插入图片描述

8、打印展示时打印文件属性、属主、属组

在这里插入图片描述

9、先打印目录后打印文件

[root@s152 ~]# tree --dirsfirst test
test
├── level1-1
│ ├── level2-1
│ ├── level2-2
│ │ └── ccc.txt
│ ├── level2-3
│ └── bb.txt
├── level1-2

12 directories, 3 files

三、使用语法及常用参数说明

1、使用语法

#tree [选项] [目录]
#tree [选项] [目录] -o filename

2、展示参数说明

  如下表格中的

参数参数说明
-a列出所有文件。
-d仅列出目录。
-l遵循像目录这样的符号链接。
-f打印每个文件的完整路径前缀。
-x仅停留在当前文件系统上。
-L level仅向下级别目录深。
-R达到最大目录级别时重新运行树。
-P pattern只列出那些与给定模式匹配的文件。
-I pattern不列出与给定模式匹配的文件。
--noreport关闭树列表末尾的文件/目录计数。
--charset X将charset X用于终端/HTML和缩进行输出。
--filelimit #目录中的文件数不要超过#。
--timefmt 根据<f>格式打印和格式化时间。
-o filename输出到文件而不是stdout。
--du打印目录大小。
--prune从输出中删除空目录。

3、文件参数说明

参数参数说明
-q将不可打印的字符打印为“?”。
-N按原样打印不可打印的字符。
-Q用双引号引用文件名。
-p打印每个文件的保护。
-u显示文件所有者或UID编号。
-g显示文件组所有者或GID编号。
-s打印每个文件的大小(以字节为单位)。
-h以更便于阅读的方式打印尺寸。
--si类似-h,但使用国际单位制(1000的幂)。
-D打印上次修改或(-c)状态更改的日期。
-F根据ls-F追加“/”、“=”、“*”、“@”、“
--inodes打印每个文件的inode编号。
--device打印每个文件所属的设备ID号。

4、排序参数说明

参数参数说明
-v按版本对文件进行字母数字排序。
-r按字母数字的相反顺序对文件进行排序。
-t按上次修改时间对文件进行排序。
-c按上次状态更改时间对文件进行排序。
-U保持文件未排序。
--dirsfirst在文件之前列出目录(-U禁用)。

5、图形选项参数说明

参数参数说明
-i不打印缩进线。
-A打印ANSI线条图形缩进线条。
-S使用ASCII图形缩进线打印。
-n始终关闭着色(-C覆盖)。
-C始终启用着色。

6、XML/HTML选项参数说明

参数参数说明
-X打印树的XML表示形式。
-H baseHREF打印出以baseHREF为顶部目录的HTML格式。
-T字符串用字符串替换默认的HTML标题和H1标题。
--nolinks关闭HTML输出中的超链接。

四、基于tree命令复制目录结构实践

  假设某系统完成集成测试,需要上线部署到生产环境。该系统有一个用于存储文件的大目录,下面包含子目录若干,测试期间产生了大量数据,总数据量超过了5个G。生产环境部署只需要存储文件的目录结构,不需要里面存储的测试文件,这个时候怎么办?这里我们将介绍使用tree命令编写脚本实现此需求。

  • 查看此文件夹大小

[root@s152 data]# du -sh *
在这里插入图片描述

  • 复制目录结构到文本文档

[root@s152 data]# tree -fid --noreport datafiles -o datafiles.txt

  • 将文本文档拷贝到生产服务器待存储目录路径下

[root@s152 data]# scp datafiles.txt 192.168.0.152:/tmp/
#这里只是模拟测试,将IP地址改为你真是需要拷贝到的主机和目录下即可。

  • 使用mkdir -p命令创建目录

[root@s152 tmp]# mkdir -p cat datafiles.txt
在这里插入图片描述

  • 对比目录数量

[root@s152 tmp]# tree /tmp/datafiles |grep directories
235 directories, 0 files
[root@s152 tmp]# tree /data/datafiles |grep directories
235 directories, 3138 files
在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恒悦sunsite

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值