Lek*_*eyn 35
Ubuntu 不限制目录的大小,它是由文件系统强加的。每个文件和目录都是一个所谓的 inode。您可以使用df -i来检查正在使用的和可用于所有已安装文件系统的 inode 数量。
我刚刚创建了 100 万和 1 个文件而没有出现问题,因为我的 ext4 主分区的 inode 限制为 50 GB (46 GiB) 已经足够大了。
我使用 shell 扩展来创建文件,并结合touch实用程序:
mkdir test
cd test
touch {0..300000}
touch {300000..600000}
touch {600000..900000}
touch {900000..1000000}
Run Code Online (Sandbox Code Playgroud)
这将创建 1000001 个文件,可以使用ls | wc -l. 为什么300000..600000不300001..600000?因为我懒得把那个 1 放在最后。
df -i 好像:
/dev/sda6 3055616 1133635 1921981 38% /home
Run Code Online (Sandbox Code Playgroud)
现在删除测试文件(cd ..&&rm -f test需要更长的时间,所以使用rm文件名):
rm {0..300000}
rm {300000..600000}
rm {600000..900000}
rm {900000..1000000}
cd ..
rmdir f
Run Code Online (Sandbox Code Playgroud)
删除文件后,正在使用的 inode 数量立即减少:
/dev/sda6 3055616 133634 2921982 5% /home
Run Code Online (Sandbox Code Playgroud)
请注意,即使文件系统允许如此大量的文件,将如此大的文件存储在单个目录中也是一个可怕的想法。至少使用一些具有类似结构的子目录f/i/l/e/filename.ext。程序通常不希望有如此大量的文件。