du
du:查看文件系统的磁盘使用量(常用来查看目录所占磁盘空间),有关du命令是否递归查询子目录占用空间问题,可查看结论
用法:du [-ahskm] 文件或目录名称
选项与参数:
- -a: 列出所有的文件与目录容量,默认统计目录下面的文件量
- -h: 以人们易读的格式容量显示
- -s: 仅列出总容量,而不列出各个目录占用容量
- -S: 不包括子目录下的统计,进包含当前目录及该目录下文件大小
- -k: 以KB显示容量
- -m: 以MB显示容量
举例:
目录结构如下:
wolf@ubuntu:~/a/du/test$ tree
.
├── dir1
│ ├── dir3
│ │ └── file4.zip
│ └── file3.zip
├── dir2
├── file1.zip
└── file2.zip
3 directories, 4 files
容量大小:
wolf@ubuntu:~/a/du/test$ ls -Rls
.:
总用量 344
4 drwxrwxr-x 3 wolf wolf 4096 Apr 29 14:15 dir1
4 drwxrwxr-x 2 wolf wolf 4096 Apr 29 14:14 dir2
168 -rw-rw-r-- 1 wolf wolf 170561 Apr 29 14:14 file1.zip
168 -rw-rw-r-- 1 wolf wolf 170561 Apr 29 14:15 file2.zip
./dir1:
总用量 172
4 drwxrwxr-x 2 wolf wolf 4096 Apr 29 14:16 dir3
168 -rw-rw-r-- 1 wolf wolf 170561 Apr 29 14:15 file3.zip
./dir1/dir3:
总用量 168
168 -rw-rw-r-- 1 wolf wolf 170561 Apr 29 14:16 file4.zip
./dir2:
总用量 0
直接使用du命令查看 test目录容量
wolf@ubuntu:~/a/du/test$ du
4 ./dir2
172 ./dir1/dir3
344 ./dir1
688 .
由于命令默认会打印出所有子目录容量,所以当子目录非常多时,输出繁琐,且du命令会直接到文件系统内去查找所有文件数据,十分耗时。故添加 -s
选项:
仅列出目录总容量:
wolf@ubuntu:~/a/du/test$ du -s
688 .
总容量大小为:
- dir1,dir2,dir3 三个目录大小 3 × 4KB = 12KB
- file1.zip + file2.zip + file3.zip + file4.zip = 4 x168KB = 672KB
- 总容量为 12 + 672 = 688KB
列出目录本身及其中文件容量
wolf@ubuntu:~/a/du/test$ du -S
4 ./dir2 # dir2目录占用空间 4KB
172 ./dir1/dir3 # dir3目录 + /dir3/file4.zip = 4 + 168 = 172KB
172 ./dir1 # dir1目录 + /dir1/file3.zip = 4 + 168 = 172
340 . # .目录 + ./file1.zip + file2.zip = 4 + 168 +168 = 340KB
结论
综上:
- du命令默认递归查询所有目录容量
- du -s 结果为当前目录及其子目录及其中文件所占用系统存储空间(包含子目录及子目录中文件)。
- du -S 仅列出目录本身及其中文件容量(不包含子目录和子目录中文件)