如何递归列出子目录及其大小?

如何递归列出子目录及其大小?

我有一个目录,其中包含许多子目录和许多文件。我所需要的只是计算出每个子目录占用了多少空间。所以我需要类似的东西ls -lR,我想看到整个目录结构一直到每个叶子,但我不需要看到单个文件。相反,我想查看每个子目录占用多少空间。例如,如果我有一个目录,其中root(i) 大小为 1MB 的子目录foo,(ii) bar2MB 的子目录以及一堆总共占用另外 1MB 的文件,我希望看到 4MB root、 1MBfoo和 2MB bar

答案1

就是这样du。考虑这个示例目录结构,它与您在问题中描述的内容相匹配:

$ tree -h root
root
├── [4.0K]  bar
│   └── [2.0M]  file
├── [256K]  file1
├── [256K]  file2
├── [256K]  file3
├── [256K]  file4
└── [4.0K]  foo
    └── [1.0M]  file

2 directories, 6 files

如果我现在运行du它,我将得到你想要的输出:

$ du -h root
2.1M    root/bar
1.1M    root/foo
4.1M    root

相关内容