(bash)对于特定目录,我需要发现该文件系统支持的最大文件大小。有问题的文件系统可能是从外部USB介质安装的,可能是FAT32,NTFS,exfat或ext2。
我知道我可以部分地猜测来自mount
的信息,但我想要一个更清晰的解决方案 - 在exfat的情况下,mount
将文件系统类型显示为“fuseblk”。
(我正在运行Linux 3.2.0-4-686-pae#1 SMP Debian 3.2.51-1 i686 GNU / Linux)
getconf FILESIZEBITS path
不适用于exfat文件系统的fuseblk
版本:它返回32,不准确。所以这不是一般解决方案。
答案 0 :(得分:4)
我认为您可以使用getconf /path
。在它打印的众多尺寸中,还有FILESIZEBITS
。 APUE对此进行了说明:
表示的最小位数,作为有符号整数值, 指定目录中允许的常规文件的最大大小
有些人担心getconf
不会返回特定于文件系统的信息:
getconf原则上不能回答这样的问题 因为它依赖于文件系统。
事实并非如此:
[cnicutar@lux ~]$ getconf FILESIZEBITS /some/fuseblk/mount
32
[cnicutar@lux ~]$ getconf FILESIZEBITS /
64
答案 1 :(得分:1)
编辑:正如另一个答案所说,您可以使用getconf FILESIZEBITS /mypath
找出文件大小可能具有的最大位数,从而获得支持的最大文件大小 - 对{{3}进行交叉引用了解与...相关的文件大小(以字节为单位)。
您还可以根据http://en.wikipedia.org/wiki/Integer_%28computer_science%29#Common_integral_data_types
等列表交叉引用文件系统 df -T
为您提供可帮助您准确识别文件系统的输出。
值得注意的是,还存在可能小于文件系统强加的其他限制,例如ulimit指定的文件大小限制。您可以使用ulimit -f
进行查询和设置,但在大多数系统中,它将是“无限制”。