我可以在一个目录上拥有多少个文件?

这个问题与此问题有关。

我使用动画,它生成大量文件(+/- 1,000,000),通常存储在一个目录中。 在Mac Os X上,一些错误提供了超过+/- 30,000个文件,因此我曾经将动画分解为各种目录。

在Ubuntu上,单个目录可以容纳的文件数量是否有限制?

Ubuntu不限制目录的大小,它是由文件系统强加的。 每个文件和目录都是所谓的inode。 您可以使用df -i检查所使用的inode数量,并且可用于所有已安装的文件系统。

我刚刚创建了100万个文件而没有问题因为我的ext4主分区50 GB(46 GiB)的inode限制足够大。

我使用shell扩展来创建文件,结合touch实用程序:

 mkdir test cd test touch {0..300000} touch {300000..600000} touch {600000..900000} touch {900000..1000000} 

这将创建1000001个文件,可以使用ls | wc -l进行validation ls | wc -l 。 为什么300000..600000而不是300001..600000 ? 因为我懒得把它放到最后。

df -i看起来像:

 /dev/sda6 3055616 1133635 1921981 38% /home 

现在删除测试文件( cd ..&&rm -f test需要更长的时间,所以使用带有文件名的rm ):

 rm {0..300000} rm {300000..600000} rm {600000..900000} rm {900000..1000000} cd .. rmdir f 

删除文件后立即减少使用的inode数量:

 /dev/sda6 3055616 133634 2921982 5% /home 

请注意,即使文件系统允许如此大量的文件,将这些大文件存储在单个目录中也是一个可怕的想法。 至少使用一些结构如f/i/l/e/filename.ext子目录。 程序通常不会期望如此大量的文件。