du用来查看某个目录或文件所占空间大小

语法:du [-abckmsh][文件或目录名]

常用的参数有:

-a:全部文件与目录大小都列出来。如果不加任何选项和参数只列出目录(包含子目录)大小。

如果du不指定单位的话,默认显示单位为K。

-b:列出的值以bytes为单位输出。

-k:以KB为单位输出,和默认不加任何选项的输出值是一样的。

-m:以MB为单位输出。

- h:系统自动调节单位;例如文件大小就几K,那么就以K单位显示,如果大到几G,则就以G单位显示。

[root@qiangzi ~]# du -b /etc/passwd

1295 /etc/passwd

[root@qiangzi ~]# du -k /etc/passwd

4 /etc/passwd

[root@qiangzi ~]# du -m /etc/passwd

1 /etc/passwd

[root@qiangzi ~]# du -h /etc/passwd

4.0K /etc/passwd

-c:选项为最后加总,(这个选项不常用)

[root@qiangzi ~]# du -c dirb

4 dirb

4 总用量

[root@qiangzi ~]# du dirb

4 dirb

-s:只列出总和,这个是用的最多。

[root@qiangzi ~]# du -s dirb

4 dirb

一般用du -sh filename(文件名)这样的形式。

[root@qiangzi ~]# du -sh dirb

4.0K dirb

du -shls -lh 的原因

对于同一个文件,一般du -sh 出来的比ls -lh 的要大,这是由于k引起来的。

原因是:

在格式化磁盘分区时,磁盘会被分割成一个个的block块,一个block是4K大小,且一个block只能放一个文件,如果这个文件很大,如大于4K,一个block是放不了的,需要另放在其他的块里;如果一个文件很小,不到4K,这个快也不会再放其他的文件了,这样du -sh其实是读取文件的block的大小,ls -lh读取的是文件本身大小。如果一个文件的大小正好是4K或者4K的倍数,则du -sh 和ls -lh读取的大小是一样的