我想知道我们是否可以将“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
还结帐ncdu:http : //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)