结合“du”和“tree”的精华

Ray*_*ews 28 disk-usage tree

我想知道我们是否可以将“du”的诚实与“tree”的缩进格式结合起来。如果我想要目录大小的列表:

du -hx -d2
Run Code Online (Sandbox Code Playgroud)

...显示两层深,所有大小摘要都是真实的,但没有子目录的缩进。另一方面:

tree --du -shaC -L 2
Run Code Online (Sandbox Code Playgroud)

...缩进和着色很好,但报告的尺寸是谎言。要获得实际尺寸,必须:

tree --du -shaC
Run Code Online (Sandbox Code Playgroud)

...也就是说,如果您让“树”显示整个目录结构,您只能获得真实的大小。无论我想要实际显示多少级子目录,我都希望能够始终拥有正确大小的摘要。我经常这样做:

tree -du -shaC | grep "\[01;34m"
Run Code Online (Sandbox Code Playgroud)

...修剪除目录之外的所有内容,并很好地缩进它们......但是没有简单的方法可以将显示限制为给定的数字级别(不包括摘要)。有办法吗?也许我错过了正确的开关......

小智 13

还结帐ncduhttp : //dev.yorhel.nl/ncdu

它的页面还列出了其他“类似项目”:

gt5 - 与 ncdu 非常相似,但方法不同。

tdu - 另一个基于 ncurses 的小型磁盘使用可视化实用程序。

TreeSize - GTK,使用树视图。

Baobab - GTK,使用饼图、树状视图和树状图。带有 GNOME。

GdMap - GTK,带有树状图显示。

Filelight - KDE,使用饼图。

QDirStat - KDE,带有树状图显示。

QDiskUsage - Qt,使用饼图。

xdiskusage - FLTK,带有树状图显示。

fsv - 3D 可视化。

Philesight - 基于 Web 的 Filelight 克隆。


cas*_*cas 11

您不需要为颜色代码 grep,-d选项是list directories only.

这似乎做你想要的:

$ tree --du -d -shaC | grep -Ev '(  *[^ ]* ){2}\['
.
??? [  18]  dir1
??? [  30]  dir2
??? [ 205]  junk
?   ??? [  18]  dir1
?   ??? [  30]  dir2
?   ??? [  76]  dir3
??? [ 119]  merge
??? [  20]  stuff

 4.4K used in 10 directories
Run Code Online (Sandbox Code Playgroud)

grep命令删除所有具有(一个或多个空格后跟一个非空格后跟一个空格)两次,后跟一个[.

如果您想要深度为 1,请将 {} 大括号内的绑定计数更改为{1}而不是{2}。同样,如果您想要深度为 3,请将其更改为{3}.

您可以将其转换为 shell 函数,如下所示:

$ tree --du -d -shaC | grep -Ev '(  *[^ ]* ){2}\['
.
??? [  18]  dir1
??? [  30]  dir2
??? [ 205]  junk
?   ??? [  18]  dir1
?   ??? [  30]  dir2
?   ??? [  76]  dir3
??? [ 119]  merge
??? [  20]  stuff

 4.4K used in 10 directories
Run Code Online (Sandbox Code Playgroud)

这用于从命令行getopts“窃取”任何-L选项及其参数tree,如果有的话。如果-L n命令行上没有选项,那也可以。

所有其他选项和参数都传递给tree命令。

local PATTERN=...条线真的没有必要。我这样做只是为了确保它适合一行而不是自动换行U&L。正则表达式可以而且可能应该直接上tree | grep ...线。

像这样运行它:

mytreedu 
Run Code Online (Sandbox Code Playgroud)

或者

mytreedu -L 2 /path/to/dir/
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢这段代码,但重复一遍,你不能使用“-d”,因为如果你这样做了,大小摘要是不正确的,或者至少它们在这里。大小将始终报告为“4096”,这是目录本身的条目大小,但不是其所有内容的大小。 (2认同)

小智 7

您可以使用dutree

在此处输入图片说明

  • 彩色输出,根据 LS_COLORS 环境变量。
  • 显示文件系统树
  • 聚合小文件的能力
  • 排除文件或目录的能力
  • 比较不同目录的能力
  • 快速,用 Rust 编写