du命令
du命令为disk usage的简写,是一个计算磁盘使用量的工具。du可以用来显示文件系统上的文件夹或者单个文件或者多个文件所占用的磁盘空间。这与df是显然不同的,df显示每个文件系统的磁盘使用量以及可用量的信息。
以下为du命令的参数选项:
-a:输出所有文件的磁盘占用量信息,而默认的情况仅仅是目录的磁盘占用量信息。
--apparent-size:输出apparent size,而不是disk usage.一般情况下apparent size要小点,但是由于文件中的空洞,以及不连续的块,可能会导致apparent size要打与disk usage.
-B:用于指示块的大小
-b:同 –apparent-size和--block-size=1是等价的
-c:(--total)产生一个总的大小的计数,而不是对内部的每个文件夹或者是文件都单独输出
-D:解引用,如果碰到的文件时符号链接,那么链接所指向的文件的信息,而不是符号文件本身的信息。
--file0-from=F:总结由文件F中所包含的NULL-TERMINATED(以NULL结尾的)文件名称的磁盘使用量
-H:同--si等价,输出警告信息。
-h:人类可读,加上一个单位信息,如K,M,G之类的
--si:使用1000作为单位而不是1024
-k:等价于 --block-size=1K
-l:如果有多个指向同一文件的硬链接,那么进行多次计数
-m:等价于 --block-size=1M
-L:解引用所有的符号链接
-P:对任何符号链接,都不解引用(默认的情况)
-0:每次输出一行使用空字符隔开而不是使用换行符
-S:不要计算所包含的子目录的大小
-s:显示每个参数的合计信息
-x:跳过位于不同文件系统上的目录,只计算同一文件系统上的目录
-X FILE:排除这些同FILE模式匹配的文件名
--exclude=PATTERN:排除和PATTERN匹配的文件
--max-depth=N:输出目录的总大小,这些目录的深度小于N,才输出。当--max-depth=0时,效果同 -s相同
--time:显示目录中每个文件或者子目录的最终修改时间
--time=WORD:显示WORD所指定的时间而不是修改时间,可以指定为:atim e ,access ,use , ctime ,status
--time-STYLE:使用style显示时间,STYLE有以下几种:full-iso,long-iso,iso,+FORMAT,FORMAT的翻译同date命令
--help:显示帮助信息后退出
--version:输出版本信息后退出
这里的PATTERN是shell patter,而不是正则表达式的patter。shell patter的?匹配任何一个字符,而*匹配任何一个字符串(即由0个字符,1个字符或者多个字符构成的串)。
例如*.o将匹配任何以”.o”作为后缀的文件名。因此呢,命令:
du --exclude=’*.o’
将跳过所有的以”.o”作为后缀的文件或者子目录
例子:
下面用gnu_files这个目录做实验,此目录为C++ Premier教材的所有示例代码文件:
[lichao@sg01 gnu_files]$ ls
1 10 11 12 13 14 15 16 17 18 2 3 4 5 6 7 8 9 GNU_makefile_template makefile noinput README
说明:使用C++Premier下载的源代码文件进行实验
[lichao@sg01 gnu_files]$ du
16 ./8/data
104 ./8
24 ./10/data
112 ./10
8 ./5/data
92 ./5
16 ./6/data
60 ./6
56 ./9
16 ./16/data
172 ./16
8 ./7/data
160 ./7
12 ./17/data
76 ./17
16 ./3/data
96 ./3
40 ./12
20 ./15/data
120 ./15
44 ./13
48 ./4
12 ./14/data
72 ./14
40 ./11/data
128 ./11
20 ./1/data
92 ./1
84 ./18
4 ./2/data
64 ./2
1644 .
说明:输出当前目录以及当前目录的所有子目录(以及它们的子目录所占用的磁盘空间的大小)所占用的磁盘空间大小,默认的单位为1K
[lichao@sg01 gnu_files]$ du -h
16K ./8/data
104K ./8
24K ./10/data
112K ./10
8.0K ./5/data
92K ./5
16K ./6/data
60K ./6
56K ./9
16K ./16/data
172K ./16
8.0K ./7/data
160K ./7
12K ./17/data
76K ./17
16K ./3/data
96K ./3
40K ./12
20K ./15/data
120K ./15
44K ./13
48K ./4
12K ./14/data
72K ./14
40K ./11/data
128K ./11
20K ./1/data
92K ./1
84K ./18
4.0K ./2/data
64K ./2
1.7M .
说明:如果对上一个例子中的单位不确定的话,加上-h选项,就能确定的知道数字的单位是什么。
[lichao@sg01 gnu_files]$ du -a
4 ./8/sstream.cc
64 ./2
1644 .
说明:输出当前目录下所有文件所占用的空间的大小。
[lichao@sg01 gnu_files]$ du --apparent-size -h
4.1K ./8/data
43K ./8
4.6K ./10/data
57K ./10
4.6K ./5/data
39K ./5
4.2K ./6/data
24K ./6
26K ./9
4.4K ./16/data
98K ./16
4.1K ./7/data
63K ./7
4.1K ./17/data
40K ./17
4.1K ./3/data
38K ./3
18K ./12
4.4K ./15/data
67K ./15
27K ./13
21K ./4
4.1K ./14/data
37K ./14
4.5K ./11/data
49K ./11
4.3K ./1/data
33K ./1
50K ./18
4.0K ./2/data
25K ./2
759K .
说明:使用--apparent-size选项。
[lichao@sg01 gnu_files]$ du -m
1 ./8/data
1 ./8
1 ./10/data
1 ./10
1 ./5/data
1 ./5
1 ./6/data
1 ./6
1 ./9
1 ./16/data
1 ./16
1 ./7/data
1 ./7
1 ./17/data
1 ./17
1 ./3/data
1 ./3
1 ./12
1 ./15/data
1 ./15
1 ./13
1 ./4
1 ./14/data
1 ./14
1 ./11/data
1 ./11
1 ./1/data
1 ./1
1 ./18
1 ./2/data
1 ./2
2 .
说明:使用-m选项,将单位设置为M。
[lichao@sg01 gnu_files]$ du -B 123
134 ./8/data
866 ./8
200 ./10/data
933 ./10
67 ./5/data
766 ./5
134 ./6/data
500 ./6
467 ./9
134 ./16/data
1432 ./16
67 ./7/data
1333 ./7
100 ./17/data
633 ./17
134 ./3/data
800 ./3
334 ./12
167 ./15/data
1000 ./15
367 ./13
400 ./4
100 ./14/data
600 ./14
334 ./11/data
1066 ./11
167 ./1/data
766 ./1
700 ./18
34 ./2/data
533 ./2
13687 .
说明:-B 选项将块大小设置为指定的大小
[lichao@sg01 gnu_files]$ du --max-depth=1
104 ./8
112 ./10
92 ./5
60 ./6
56 ./9
172 ./16
160 ./7
76 ./17
96 ./3
40 ./12
120 ./15
44 ./13
48 ./4
72 ./14
128 ./11
92 ./1
84 ./18
64 ./2
1644 .
说明:用于设置从当前目录开始的深度
[lichao@sg01 gnu_files]$ du --time
16 2005-02-09 05:32 ./8/data
104 2005-03-02 03:50 ./8
24 2005-02-02 00:56 ./10/data
112 2005-03-02 03:49 ./10
8 2005-02-02 00:56 ./5/data
92 2005-03-02 03:50 ./5
16 2005-02-09 05:32 ./6/data
60 2005-03-02 03:50 ./6
56 2005-03-02 03:50 ./9
16 2005-02-02 00:56 ./16/data
172 2005-03-02 03:49 ./16
8 2005-02-02 00:56 ./7/data
160 2005-03-02 03:50 ./7
12 2005-02-09 05:32 ./17/data
76 2005-03-02 03:50 ./17
16 2005-02-02 00:56 ./3/data
96 2005-03-02 03:50 ./3
40 2005-03-02 03:49 ./12
20 2005-02-02 00:56 ./15/data
120 2005-03-02 03:49 ./15
44 2005-03-02 03:49 ./13
48 2005-03-02 03:50 ./4
12 2005-02-09 05:32 ./14/data
72 2005-03-02 03:49 ./14
40 2005-02-09 05:32 ./11/data
128 2005-03-02 03:49 ./11
20 2012-03-11 23:46 ./1/data
92 2012-03-19 10:33 ./1
84 2005-03-02 03:50 ./18
4 2005-02-02 00:56 ./2/data
64 2005-03-02 03:50 ./2
1644 2012-03-19 10:33 .
说明:输出修改时间
[lichao@sg01 gnu_files]$ du -S
16 ./8/data
88 ./8
24 ./10/data
88 ./10
8 ./5/data
84 ./5
16 ./6/data
44 ./6
56 ./9
16 ./16/data
156 ./16
8 ./7/data
152 ./7
12 ./17/data
64 ./17
16 ./3/data
80 ./3
40 ./12
20 ./15/data
100 ./15
44 ./13
48 ./4
12 ./14/data
60 ./14
40 ./11/data
88 ./11
20 ./1/data
72 ./1
84 ./18
4 ./2/data
60 ./2
24 .
说明:不计算子目录大小时的情况
[lichao@sg01 gnu_files]$ du -0
16 ./8/data104 ./824 ./10/data112 ./108 ./5/data92 ./516 ./6/data60 ./656 ./916 ./16/data172 ./168 ./7/data160 ./712 ./17/data76 ./1716 ./3/data96 ./340 ./1220 ./15/data120 ./1544 ./1348 ./412 ./14/data72 ./1440 ./11/data128 ./1120 ./1/data92 ./184 ./184 ./2/data64 ./21644 .
说明:不使用换行符隔开
本文转自hipercomer 51CTO博客,原文链接:http://blog.51cto.com/hipercomer/810326