it-swarm.cn

Linux上的文件名长度限制?

Linux上是否有文件名或路径长度限制?

130
ro.

请参阅 有关文件系统比较的维基百科页面 ,尤其是在列中。最大文件名长度

以下是流行文件系统中的一些文件名长度限制

BTRFS   255 bytes
exFAT   255 UTF-16 characters
ext2    255 bytes
ext3    255 bytes
ext3cow 255 bytes
ext4    255 bytes
FAT32   8.3 (255 UCS-2 code units with VFAT LFNs)
NTFS    255 characters
XFS     255 bytes
134
WerkkreW

我读过 这里 路径长度限制在系统标题中。文件名长度限制也存在。在我的系统上,它是文件:

  /usr/src/linux-headers-2.6.38-10/include/linux/limits.h

c语言定义:

  #define NAME_MAX         255    /* # chars in a file name */
  #define PATH_MAX        4096    /* # chars in a path name including nul */

还有更多。

90
sfp

我指的是其他答案,请支持。

Linux上是否有文件名或路径长度限制?

是的,文件名和路径名的长度受以下限制:

要动态获取这些属性:

  • 使用 Michael Aaron Safyan 提出的函数 pathconffpathconf
  • 创建文件名(或路径名)的时间越来越长,如 dogbane 所述
  • 使用 tim 提出的命令getconf,该命令在Linux上也可用:

    $ getconf NAME_MAX /mnt/sda2/
    255
    $ getconf PATH_MAX /mnt/sda3/
    4096
    
24
olibre

为了节省时间(并将其锚定到内存中):

ext2,ext3,ext4,zfs:无路径名限制; 255个字节的文件名限制。

20
Ivan

这些是文件系统名称的长度。 “ linux”本身也有一些。例如,从bits/stdio_lim.h:

# define FILENAME_MAX 4096
6
jj33

可以通过无办法来确定Linux上最大路径长度。在我的系统上:

$ getconf PATH_MAX / 
4096
$ getconf _POSIX_PATH_MAX / 
4096

但是我可以轻松地创建长度超过4096个字符的路径。而是看PATH_MAX作为下限。您可以保证能够创建这么长的路径,但是也可以创建更长的路径。

3
Björn Lindqvist

您应该始终使用pathconf或类似的函数来获取有关指定项目的运行时值,因为 page 表示:

但是,应注意,列出的许多限制不是不变的,并且由于以下原因,在运行时,该限制的值可能不同于此标头中给出的值:

  • 该限制取决于路径名。

  • 编译和运行时机器的限制不同。

由于这些原因,应用程序可以使用fpathconf(),pathconf()和sysconf()函数在运行时确定限制的实际值。

1
andy

它在系统limits.h头文件中指定。

这是这些文件之一:

cat /usr/include/linux/limits.h

...
#define NAME_MAX         255    /* # chars in a file name */
#define PATH_MAX        4096    /* # chars in a path name including nul */
...

这是此文件副本的位置以及它们定义的值:

find /usr | grep limits.h | xargs -I {} grep -H 'NAME_MAX' {}

输出:

...
/usr/include/linux/limits.h:#define NAME_MAX         255        /* # chars in a file name */
...
0
Bohdan Voloshyn