轉自:http://share.blog.51cto.com/278008/201028
du命令用來查看目錄或文件所占用磁盤空間的大小。常用選項組合為:du -sh
一、
du
的功能:
`du` reports the amount of disk space used by the specified files and for each subdirectory (of directory arguments). with no arguments,`du` reports the disk space for the current directory。
很明顯,與
df
不同,它用來查看文件或目錄所占用的磁盤空間的大小。
二、
du
常用的選項:
-h
:以人類可讀的方式顯示
-a
:顯示目錄占用的磁盤空間大小,還要顯示其下目錄和文件占用磁盤空間的大小
-s
:顯示目錄占用的磁盤空間大小,不要顯示其下子目錄和文件占用的磁盤空間大小
-c
:顯示幾個目錄或文件占用的磁盤空間大小,還要統計它們的總和
--apparent-size
:顯示目錄或文件自身的大小
-l
:統計硬鏈接占用磁盤空間的大小
-L
:統計符號鏈接所指向的文件占用的磁盤空間大小
一、du -h
:這個就不多說了。
二、du -a
:使用此選項時,顯示目錄和目錄下子目錄和文件占用磁盤空間的大小。

可以看出,默認情況下du只顯示download目錄占用磁盤空間的大小,而使用-a選項后,它不僅顯示了目錄(最后一行),而且顯示了目錄下各個文件占用磁盤空間的大小。
三、du -s
:使用此選項時,du只顯示目錄所占用磁盤空間的大小,而不顯示其下子目錄和文件占用磁盤空間的信息。

默認情況下,du不顯示目錄下文件占用磁盤空間的信息,但它會顯示其下子目錄占用磁盤空間的信息;而使用-s選項以后,只顯示xx目錄占用磁盤空間的大小。
四、du --apparent-size
:顯示文件或目錄自身大小,而不是它們占用的磁盤空間大小。文件或目錄占用磁盤空間的大小與它們自身大小有時候並非完全一致;這種現象非
linux
所獨有,
windows
里也是如此。我們看這個選項的幫助文檔的解釋:
The apparent size of a file is the number of bytes reported by `wc –c` regular files ,or more generally, `ls –l –block-size=1` or `stat –format=%s`.For example, a file containing the word `zoo` with no newline would, of course, have an apparent size of 3. Such a small file may require anywhere from 0 to 16 kib or more of disk space, depending on the type and configuration of the file system on which the file resides.
這段話給出了文件或目錄自身大小與占用磁盤空間大小的區別。他下面舉出了一個更加誇張的例子,這里就不把它寫出來了。我們知道了:
wc
或
ls --block-size
顯示的是其自身大小,而
du
給出的則是占用的磁盤空間的大小。

五、du -c
:使用此選項時,不僅顯示幾個文件或目錄各自占用磁盤空間的大小,還統計它們的總和。

如圖所示,加上 -c 選項后, du 不僅顯示兩個目錄各自占用磁盤空間的大小,還在最后一行統計它們的總和。
六、du -l
:這個選項主要是針對硬鏈接。在統計目錄占用磁盤空間大小時,
-l
選項會把硬鏈接也統計進來。幫助文檔是這樣解釋的:
Count the size of all files,even if they have appeared already(as a hard link)
。

我們在download目錄下建立一個硬鏈接,指向本目錄下的一個文件。不使用-l選項時,du發現硬鏈接指向本目錄下的文件,於是自動忽略該鏈接文件,以免造成重復統計;使用-l選項,du才會把硬鏈接文件也統計進來。
七、du -L:這個選項主要是針對符號鏈接。它會把符號鏈接所指向的文件占用磁盤空間的大小也統計進來。幫助文檔是這樣解釋的:Dereference symbolic links(show the disk space used by the file or directory that the link points to instead of the space used by the link)。

我們在download目錄下創建一個符號鏈接,指向本目錄下的一個文件。我們看到上面圖片中顯示的操作結果,當使用-L選項時,du會把符號鏈接所指向的文件的大小也統計到目錄里來。
另外我們看du -lh的結果,與du -h相同,好像沒有統計出符號鏈接的大小;其實並非如此。從實際操作來看,符號鏈接本身似乎並不占用磁盤空間,所以才出現上述情況。

最后,
du
命令在統計目錄占用磁盤空間時,默認不統計鏈接文件(無論是硬鏈接或是符號鏈接),所以要用
-l
和
-L
選項特地指出來;此外,
du
命令默認不顯示目錄下文件占用磁盤空間的信息,但是卻默認顯示其下子目錄所占用磁盤空間的信息。怪哉。