这两者有什么区别:
du -h --max-depth=2 /usr/* | sort -nr | head -n 20
和:
du -h --max-depth=2 /usr/ | sort -nr | head -n 20
我想显示 /usr 文件夹下最大的 20 个文件夹。
这 20 个文件夹是否也包括所有子文件夹的大小?
答案1
这两个调用的行为有一些重要的变化。让我们使用一个例子,使用以下代码创建的结构:
mkdir mydir/{.a1,a2,a3}/{.b1,b2}/{.c1,c2} -p
如果你调用,du --max-depth=2 mydir
你将获得:
0 mydir/.a1/.b1
0 mydir/.a1/b2
0 mydir/.a1
0 mydir/a2/.b1
0 mydir/a2/b2
0 mydir/a2
0 mydir/a3/.b1
0 mydir/a3/b2
0 mydir/a3
0 mydir/
但如果你运行:
du --max-depth=2 mydir/*`
通配符将被扩展并变为以下内容的等价物:
du --max-depth=2 mydir/a2 mydir/a3
将会得到以下结果:
0 mydir/a2/.b1/.c1
0 mydir/a2/.b1/c2
0 mydir/a2/.b1
0 mydir/a2/b2/.c1
0 mydir/a2/b2/c2
0 mydir/a2/b2
0 mydir/a2
0 mydir/a3/.b1/.c1
0 mydir/a3/.b1/c2
0 mydir/a3/.b1
0 mydir/a3/b2/.c1
0 mydir/a3/b2/c2
0 mydir/a3/b2
0 mydir/a3
这里要注意的重要一点是,它将忽略.a1
目录。为了包含它,您必须运行类似于以下内容的命令:(du --max-depth=2 mydir/{.[!.]*,*}
但我想可能有一种我不知道的更简单、更通用的方法)。它也不会计算目录的整体大小mydir
。
是的,报告的大小du
包括子文件夹的大小。
答案2
前者统计 内的可见物体/usr
,后者统计 下的所有物体/usr
,包括/usr
其自身。