Linux命令之du

du命令用来查看指定文件所占用或分配的磁盘空间,以磁盘的block为单位。如果参数是目录,它会显示* 该目录下所有文件占用的总空间 *,同时递归的列出各级子目录的总占用空间,但是没有非目录文件的信息。如果没有指定文件名称,默认为当前目录:

m@sys:~/program/C_codes/tools$ du
16  ./calculators
28  .

需要注意的是,这里给出的统计数值指的是该目录下所有文件加和的总量,而不是单独这个目录文件本身,上篇文章中说过,ls目录有个选项-s也可以显示文件所占用的磁盘空间大小,我们来对比一下:

[email protected]:~/program/C_codes/tools$ ls -las
总用量 20
4 drwxrwxr-x 3 m m 4096  4月 24 11:24 .
4 drwxrwxr-x 5 m m 4096  5月 12 19:47 ..
4 drwxrwxr-x 2 m m 4096  5月  4 00:16 calculators
4 -rw-rw-r-- 1 m m  422  3月 12 21:24 formtrans.c
4 -rw-rw-r-- 1 m m   31  4月  7 16:18 README.md

结果对比很明显,ls -s只是把目录当成普通文件来计算其本身所占的空间;而du却是计算该目录下所有的文件占据的空间总和(包括目录文件本身)。这里需要一点linux文件与磁盘的知识,可以参考我的这篇文章

从上面ls的结果也可以看出,Linux为每个文件分配的磁盘空间至少是4个block,不管其实际大小;而目录基本上都是4个block。

下面是各个选项:

  • -a:当参数是目录时,同时列出目录所包含的各种文件的占用空间大小,而不仅仅是各级子目录。
    • -c:显式统计目录的总占用空间,即会专门有一行显示‘total’或‘总用量’。其实这个选项可有可无,因为du显示的指定目录的占用空间其实就是该目录的总用量:
 m@sys:~/program/C_codes/tools/calculators$ du -ca
4   ./calculator.l
4   ./Makefile
4   ./calculator.y
16  .
16  总用量

可以看到,‘.’目录(当前目录)和总用量的结果一样。

  • -B:指定显示单位,而不是默认的block。一般情况下,block的大小为4096字节,它是在格式化磁盘(mkfs命令)的时候指定的,可以这样查看:
m@sys:~$ sudo tune2fs -l /dev/sda1 |grep "Block size"
Block size:               4096

那么-B后面可以跟哪些参数呢?分两套标准:工业标准和计算机标准。

  • 在计算机标准中,单位分别是:1、K、M、G….这里相邻单位之间的倍数是1024,数字‘1’指的就是一个字节,1K = 1024字节,1M = 1024K…;
  • 在工业标准中,单位分别是:1、KB、MB、GB…相邻单位的倍数是1000,1K = 1000字节,1M = 1000K …

    单位前面可以加数字

 m@sys:~/program/C_codes/tools$ du -B 1
16384   ./calculators
28672   .

m@sys:~/program/C_codes/tools$ du -B k
16K ./calculators
28K .
  • - -apparent-size:显示文件实际的大小,而不是分配的空间大小:
m@sys:~/program/C_codes/tools$ du --apparent-size
6   ./calculators
10  .
m@sys:~/program/C_codes/tools$ du
16  ./calculators
28  .

从结果看以看出,加不加这个参数区别还是很明显的;默认以block为单位,可以加上-B 1选项以字节为单位显示,就可以与ls- l显示一样的大小:

m@sys:~$ du --apparent-size -B 1 formtrans.c
422 formtrans.c
m@sys:~$ ls -l formtrans.c
-rw-rw-r-- 1 m m 422  3月 12 21:24 formtrans.c

不过这一招对于目录文件却不管用,因为正如上面所说,对于目录,du总是计算其包含的所有文件的总和,而不是其本身:

m@sys:~/program/C_codes/tools/calculators$ ls -al
总用量 20
drwxrwxr-x 2 m m 4096  5月  4 00:16 .
drwxrwxr-x 3 m m 4096  4月 24 11:24 ..
-rw-rw-r-- 1 m m  340  4月 24 14:10 calculator.l
-rw-rw-r-- 1 m m  673  5月  4 00:16 calculator.y
-rw-rw-r-- 1 m m  367  4月 24 14:20 Makefile
m@sys:~/program/C_codes/tools/calculators$ du --apparent-size -B 1  -a .
340 ./calculator.l
367 ./Makefile
673 ./calculator.y
5476    .

我们可以对后面那个结果计算一下:5476 - 673 - 367 - 340 = 4096,正好是一个目录文件本身的实际大小,和ls -l的结果一样。

  • -b:等价于–apparent-size –block-size=1
 m@sys:~/program/C_codes/tools/calculators$ du -a --apparent-size -B 1
340 ./calculator.l
367 ./Makefile
673 ./calculator.y
5476    .

m@sys:~/program/C_codes/tools/calculators$ du -ab
340 ./calculator.l
367 ./Makefile
673 ./calculator.y
5476    .
  • -k:等价于-B 1k
 m@sys:~/program/C_codes/tools/calculators$ du -a -B 1k
4   ./calculator.l
4   ./Makefile
4   ./calculator.y
16  .

m@sys:~/program/C_codes/tools/calculators$ du -a -k
4   ./calculator.l
4   ./Makefile
4   ./calculator.y
16  .
  • -m:和-k类似。实际上,-k和-m这类的选项在很多命令中都有出现。
  • -S:从总结果中减去所有子目录的大小:
 m@sys:~/program/C_codes/tools$ du --apparent-size -B 1 -S .
5476    ./calculators
4549    .
m@sys:~/program/C_codes/tools$ du --apparent-size -B 1  .
5476    ./calculators
10025   .
  • -h:print sizes in human readable format,实在没什么好说的。
  • -s:只显示该目录的总量,不显示各级子目录。
  • -d:指定要显示的子目录的层数,如:-d 0就是目录自己本身,等价于-s;-d 1就是同时显示一级子目录;-d 2显示孙目录。。。以此类推。

全文完。

时间: 2024-11-14 12:24:21

Linux命令之du的相关文章

linux命令之du与df

du与df [[email protected] samba]# dumpe2fs  /dev/sda3|grep "Block size"    4096字节du 内容实际大小,以字节为单位,统计文件大小相加df 占用空间大小,以块为单位,统计数据块使用情况 du -s命令通过将指定文件系统中所有的目录.符号链接和文件使用的块数累加得到该文件系统使用的总块数:而df命令通过查看文件系统磁盘块分配图得出总块数与剩余块数.文件系统分配其中的一些磁盘块用来记录它自身的一些数据,如i节点,磁

linux 命令(8) du

原文出处:http://www.cnblogs.com/peida/archive/2012/12/07/2806483.html Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的. 1.命令格式: du [选项][文件] 2.命令功能: 显示每个文件和目录的磁盘使用空间. 3.命令参数: -a或-all  显示目录中个别文件的大小. -b或-bytes  显示目录或文件大小时,以byte为单位. -

linux命令:du 命令

Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的. 1.命令格式: du [选项][文件] 2.命令功能: 显示每个文件和目录的磁盘使用空间. 3.命令参数: -a或-all  显示目录中个别文件的大小. -b或-bytes  显示目录或文件大小时,以byte为单位. -c或--total  除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和. -k或--kilobytes  以KB(10

linux 命令——34 du(转)

Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的. 1.命令格式: du [选项][文件] 2.命令功能: 显示每个文件和目录的磁盘使用空间. 3.命令参数: -a或-all  显示目录中个别文件的大小. -b或-bytes  显示目录或文件大小时,以byte为单位. -c或--total  除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和. -k或--kilobytes  以KB(10

N天学习一个linux命令之du

用途 统计文件或者目录占用硬盘空间大小 用法 du [OPTION] [FILE]du [OPTION] --files0-from=F 常用参数 -a, --all统计所有文件,不仅仅是目录 -b, --bytes 字节为单位统计 -c, --total输出总大小 -D, --dereference-args对命令行列出的链接文件,按照链接文件指向的真实文件大小统计,默认是链接文件的大小 --files0-from=F从指定的文件F中读取需要统计的文件列表,多个文件名使用空字符(\0)分隔(N

每天一个linux命令:du 命令

Linux du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的. 1.命令格式: du [选项][文件] 2.命令功能: 显示每个文件和目录的磁盘使用空间. 3.命令参数: -a或-all  显示目录中个别文件的大小. -b或-bytes  显示目录或文件大小时,以byte为单位. -c或--total  除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和. -k或--kilobytes  以KB(10

每天一个linux命令(33)--du命令

Linux  du命令也是查看使用空间的,但是与 df  命令不同的是 Linux du 命令是对文件和目录磁盘使用的空间的查看,还是和df 命令有一些区别的. 1.命令格式: du  [选项] [文件] 2.命令功能: 显示每个文件和目录的磁盘使用空间. 3.命令参数: -a或-all 列出目录下所有文件并显示每个文件的大小 -b或-bytes 显示目录或文件大小时,以byte 为单位 -c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和 -k或--kiliby

linux命令:du

1.命令介绍: du用来查看文件和目录的使用空间. 2.命令格式: du [选项] 文件 3.命令参数: -a或-all  显示目录中个别文件的大小. -b或-bytes  显示目录或文件大小时,以byte为单位. -c或--total  除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和. -k或--kilobytes  以KB(1024bytes)为单位输出. -m或--megabytes  以MB为单位输出. -s或--summarize  仅显示总计,只列出最后加总的值. -

记录linux命令 -- df / du

df / du 是用来查看磁盘空间使用情况的命令.通常用于定位 磁盘空间不足的问题. du 对文件和目录磁盘使用的空间的查看 常用操作  : du -h  路径 若不带路径,则查找默认路径. [email protected] soft]# du -h test 608K    test/test6 308K    test/test4 4.0K    test/scf/lib 4.0K    test/scf/service/deploy/product 4.0K    test/scf/se