我可以在一个目录上拥有多少个文件?
这个问题与此问题有关。
我使用动画,它生成大量文件(+/- 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
子目录。 程序通常不会期望如此大量的文件。