2010-06-05 39 views
0

可能重複:
When running ls -l, why does the filesize on a directory not match the output of du?什麼文件夾的大小表明LS -la

嗨。 我很有趣的信息是什麼顯示我在Linux輸出ls -la。所以,默認大小是4K。但是,如果有很多文件,可能是零大小,如PHP會話=),則大小爲!= 4K。 什麼讓我看到ls -la? 而之後,當我清理這個文件夾,我看到最後的最大大小。

+0

查看http://stackoverflow.com/questions/1012488/when-running-ls-l-why-does-the-filesize-on-a-directory-not-match-the-output-of – kennytm 2010-06-05 11:14:27

+0

你可能會想在這裏問這個問題: http://superuser.com/ Cheers =) – Andree 2010-06-05 11:14:29

回答

1

ls -al會給你目錄本身佔用的空間,而不是其中的文件。

因此,它具有最小尺寸。當一個目錄被創建時,它被賦予了這麼多空間來存儲文件信息,這是每個文件一定數量的字節數(假設64個字節認爲該數字可能不同)。

如果初始大小是4K,那最多可以允許64個文件。一旦你把超過64個文件放到目錄中,它將不得不被擴展。


至於您的評論:

之所以說它可能無法獲得,當你刪除所有文件中這是因爲通常有沒有真正的優勢更小。它只剩下相同的大小,以便在下次放入大量文件時它不必再次展開(它傾向於假定過去的行爲是未來行爲的指示)。

如果你想減少佔用的空間,這是一個古老的技巧。若要縮小/tmp/qq的大小,請創建一個全新的/tmp/qq2,將所有文件複製(在刪除不需要的文件後),然後將/tmp/qq重命名爲/tmp/qq3/tmp/qq2/tmp/qq。瞧!噢,最終刪除/tmp/qq2

+0

但是,爲什麼當我清理目錄時,ls的大小沒有改變? rm -rf * – libbkmz 2010-06-05 11:18:51

+0

好的。文件夾使用這個空間嗎?我找到與684M的文件夾)) 而我怎麼可以減少它的大小? – libbkmz 2010-06-05 11:21:33

+0

@Bkmz,請參閱我的更新以獲取用於執行此操作的技巧。根據所使用的文件系統,可能還有其他方法來完成它,但這基本上是我們過去做過的方式(它仍然有效)。 – paxdiablo 2010-06-05 11:24:26