linux系统中du命令
linux系统中du命令用于统计文件和目录所占用的磁盘空间的大小
1、创建测试数据
[root@linuxprobe test]# dd if=/dev/zero bs=1024 count=10240 of=a.txt ## 创建一个大小为10MB的测试文件
10240+0 records in
10240+0 records out
10485760 bytes (10 MB) copied, 0.0103431 s, 1.0 GB/s
[root@linuxprobe test]# ll -h
total 10M
-rw-r--r--. 1 root root 10M Oct 23 23:34 a.txt
[root@linuxprobe test]# cat a.txt a.txt > b.txt ## 创建大小为20MB的测试文件
[root@linuxprobe test]# mkdir test01 ## 创建测试目录
[root@linuxprobe test]# cp b.txt test01/ ## 放入一个20MB的文件
[root@linuxprobe test]# ll -h
total 30M
-rw-r--r--. 1 root root 10M Oct 23 23:34 a.txt
-rw-r--r--. 1 root root 20M Oct 23 23:34 b.txt
drwxr-xr-x. 2 root root 18 Oct 23 23:34 test01
[root@linuxprobe test]# tree ## 查看目录结构
.
├── a.txt
├── b.txt
└── test01
└── b.txt
1 directory, 3 files
2、直接测试
[root@linuxprobe test]# du ## du命令统计了当前目录下目录总的大小、当前目录下文件加目录总的大小
20480 ./test01
51200 .
3、加 -h 参数,以人类友好的方式显示
[root@linuxprobe test]# du -h
20M ./test01
50M .
4、-a参数
[root@linuxprobe test]# du -a ## 加-a参数,显示了当前目录小所有文件及目录各自的大小和当前目录总的大小,可以理解为all
10240 ./a.txt
20480 ./b.txt
20480 ./test01/b.txt
20480 ./test01
51200 .
[root@linuxprobe test]# du -ah
10M ./a.txt
20M ./b.txt
20M ./test01/b.txt
20M ./test01
50M .
5、加 -s参数
[root@linuxprobe test]# du -s ## 当前目录总的大小,可理解为sum
51200 .
[root@linuxprobe test]# du -sh
50M .
6、du后面可以直接加文件和目录
[root@linuxprobe test]# du b.txt
20480 b.txt
[root@linuxprobe test]# du -h b.txt
20M b.txt
[root@linuxprobe test]# du test01/
20480 test01/
[root@linuxprobe test]# du -h test01/
20M test01/
7、-c选项
[root@linuxprobe test]# cat a.txt b.txt > c.txt
[root@linuxprobe test]# ll -h
total 60M
-rw-r--r--. 1 root root 10M Oct 23 23:34 a.txt
-rw-r--r--. 1 root root 20M Oct 23 23:34 b.txt
-rw-r--r--. 1 root root 30M Oct 23 23:45 c.txt
drwxr-xr-x. 2 root root 18 Oct 23 23:34 test01
[root@linuxprobe test]# du -c a.txt c.txt ## -c选项可用于计算几个文件大小的和
10240 a.txt
30720 c.txt
40960 total
[root@linuxprobe test]# du -ch a.txt c.txt
10M a.txt
30M c.txt
40M total
8、-l 统计硬链接文件大小
[root@linuxprobe test]# ll -h
total 60M
-rw-r--r--. 1 root root 10M Oct 23 23:34 a.txt
-rw-r--r--. 1 root root 20M Oct 23 23:34 b.txt
-rw-r--r--. 1 root root 30M Oct 23 23:45 c.txt
drwxr-xr-x. 2 root root 18 Oct 23 23:34 test01
[root@linuxprobe test]# ln b.txt b.hard ## 创建b.txt文件的硬链接
[root@linuxprobe test]# ll -h
total 80M
-rw-r--r--. 1 root root 10M Oct 23 23:34 a.txt
-rw-r--r--. 2 root root 20M Oct 23 23:34 b.hard
-rw-r--r--. 2 root root 20M Oct 23 23:34 b.txt
-rw-r--r--. 1 root root 30M Oct 23 23:45 c.txt
drwxr-xr-x. 2 root root 18 Oct 23 23:34 test01
[root@linuxprobe test]# du -h ## 系统检测到硬链接,直接忽略掉
20M ./test01
80M .
[root@linuxprobe test]# du -lh ## 加 -l选项,统计硬链接文件大小
20M ./test01
100M .
9、-L选项统计软链接大小
[root@linuxprobe test]# ll -h
total 80M
-rw-r--r--. 1 root root 10M Oct 23 23:34 a.txt
-rw-r--r--. 2 root root 20M Oct 23 23:34 b.hard
-rw-r--r--. 2 root root 20M Oct 23 23:34 b.txt
-rw-r--r--. 1 root root 30M Oct 23 23:45 c.txt
drwxr-xr-x. 2 root root 18 Oct 23 23:34 test01
[root@linuxprobe test]# ln -s c.txt c.link ## 创建c.txt的软链接
[root@linuxprobe test]# ll -h
total 80M
-rw-r--r--. 1 root root 10M Oct 23 23:34 a.txt
-rw-r--r--. 2 root root 20M Oct 23 23:34 b.hard
-rw-r--r--. 2 root root 20M Oct 23 23:34 b.txt
lrwxrwxrwx. 1 root root 5 Oct 23 23:52 c.link -> c.txt
-rw-r--r--. 1 root root 30M Oct 23 23:45 c.txt
drwxr-xr-x. 2 root root 18 Oct 23 23:34 test01
[root@linuxprobe test]# du -h c.link ## 直接统计大小为0
0 c.link
[root@linuxprobe test]# du -L c.link ## 加-L选项,可以统计大小
30720 c.link
[root@linuxprobe test]# du -Lh c.link
30M c.link
10、指定输出单位
[root@linuxprobe test]# du -b
20971538 ./test01
83886184 .
[root@linuxprobe test]# du -k
20480 ./test01
81920 .
[root@linuxprobe test]# du -m
20 ./test01
80 .
11、--exelude 排除指定文件或者目录统计
[root@linuxprobe test]# ll -h
total 60M
-rw-r--r--. 1 root root 10M Oct 23 23:34 a.txt
-rw-r--r--. 1 root root 20M Oct 23 23:34 b.txt
-rw-r--r--. 1 root root 30M Oct 23 23:59 c.txt
[root@linuxprobe test]# du -sh
60M .
[root@linuxprobe test]# du -sh --exclude=c.txt
30M .
[root@linuxprobe test]# du -sh --exclude=a.txt
50M .
[root@linuxprobe test]# du -sh --exclude=b.txt
40M .
12、文件大小排序
[root@linuxprobe test]# du -sh *
10M a.txt
20M b.txt
30M c.txt
60M test01
[root@linuxprobe test]# du -sh * | sort -r
60M test01
30M c.txt
20M b.txt
10M a.txt
[root@linuxprobe test]# du -sk * | sort -r
61440 test01
30720 c.txt
20480 b.txt
10240 a.txt
[root@linuxprobe test]# du -sm * | sort -r
60 test01
30 c.txt
20 b.txt
10 a.txt
[root@linuxprobe test]# du -sm * | sort
10 a.txt
20 b.txt
30 c.txt
60 test01