关于 du 命令 linux 磁盘使用的说明

ila*_*sch 3 linux du

这两者有什么区别:

du -h --max-depth=2 /usr/* | sort -nr | head -n 20
Run Code Online (Sandbox Code Playgroud)

和:

du -h --max-depth=2 /usr/ | sort -nr | head -n 20
Run Code Online (Sandbox Code Playgroud)

我想在 /usr 文件夹下显示 20 个最大的文件夹。
这 20 个文件夹是否也包括整个子文件夹大小?

小智 7

这两个调用的行为有一些重要的变化。让我们使用一个示例,其结构由以下人员创建:

mkdir mydir/{.a1,a2,a3}/{.b1,b2}/{.c1,c2} -p
Run Code Online (Sandbox Code Playgroud)

如果您调用,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/
Run Code Online (Sandbox Code Playgroud)

但是如果你运行:

du --max-depth=2 mydir/*`
Run Code Online (Sandbox Code Playgroud)

通配符将被扩展,它将变成相当于:

du --max-depth=2 mydir/a2 mydir/a3
Run Code Online (Sandbox Code Playgroud)

这会给你以下结果:

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
Run Code Online (Sandbox Code Playgroud)

这里要注意的重要一点是它会省略.a1目录。为了包含它,您必须运行类似于:(du --max-depth=2 mydir/{.[!.]*,*}但我想可能有一种我不知道的更简单,更通用的方法)。它也不会计算mydir目录的整体大小。

是的,报告的大小du包括子文件夹的大小。