2010-06-05 59 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