![GNU core utils 可以将一个文件分割成每个 1gb 文件大小的最大文件量是多少?](https://linux22.com/image/227315/GNU%20core%20utils%20%E5%8F%AF%E4%BB%A5%E5%B0%86%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6%E5%88%86%E5%89%B2%E6%88%90%E6%AF%8F%E4%B8%AA%201gb%20%E6%96%87%E4%BB%B6%E5%A4%A7%E5%B0%8F%E7%9A%84%E6%9C%80%E5%A4%A7%E6%96%87%E4%BB%B6%E9%87%8F%E6%98%AF%E5%A4%9A%E5%B0%91%EF%BC%9F.png)
我想知道我有哪些限制。我看到它有一个字母系统 az,然后将第二个字母增加 1 (xay -> xaz -> (没见过但假设) xba -> xbb)
答案1
split(1) 默认情况下会自动扩展后缀长度(除非您指定特定的后缀长度)。因此,您可能遇到的限制是文件系统上的文件数量、文件名长度、文件系统大小。基本上所有文件系统限制,而不是 split(1) 限制。
警告, split(1) 曾经有 26^2 的限制,但我通过在 v8.16 (2012) 中自动扩展后缀来删除它
答案2
这实际上受到文件系统支持的最大文件数或最大可能的输入文件大小的限制,而不是受到split
.
后缀长度不是相关的限制,因为即使只有 8 个字母后缀字符,您也可以覆盖大于 2 64字节的输入文件,因为
1 GB • 26 8
= 2 30 B • 26 8
> 2 30 B • 16 8
= 2 30 B • 2 4•8
= 2 64 B
参考:split.c
,他们只是做一个循环除以字母表中的字母数量来计算出他们需要多少个字母。
答案3
您可以自己尝试一下,生成(例如)一个 100kB 文件并写入每个(例如)2 个字节的文件:
mkdir try
cd try
dd if=/dev/urandom iflag=fullblock bs=1024 count=100 >random.dat
split -a4 -b2 random.dat
这将生成 51200 个输出文件,xaaaa
以xcxtf
.请参阅man split
参考资料 的选项。