回答:
ファイルシステムの比較については、特に最大ファイル名の長さの列のウィキペディアのページを参照してください。
一般的なファイルシステムでのファイル名の長さの制限を次に示します。
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
ここで、パスの長さの制限はシステムヘッダーにあることを読みました。ファイル名の長さの制限もあります。私のシステムでは、ファイルです:
/usr/src/linux-headers-2.6.38-10/include/linux/limits.h
C-langの定義:
#define NAME_MAX 255 /* # chars in a file name */
#define PATH_MAX 4096 /* # chars in a path name including nul */
さらにいくつか。
私は他の答えを参照し、それらに賛成してください。
Linuxにファイル名またはパスの長さの制限はありますか?
はい、ファイル名とパス名の長さは次の制限を受けます。
linux/limits.h
ているように定義された定数。これらのプロパティを動的に取得するには:
pathconf
をfpathconf
使用しますLinuxでも使用可能なtimがgetconf
提案するコマンドを使用します。
$ getconf NAME_MAX /mnt/sda2/
255
$ getconf PATH_MAX /mnt/sda3/
4096
また、時間を節約するため(およびメモリに固定するため):
ext2、ext3、ext4、zfs:パス名の制限なし。255バイトのファイル名制限。
PATH_MAX = 4096
ただし、ほとんどのプログラムはへの絶対パスで制限されています。プログラムが相対パスを使用でき、最初に作業ディレクトリを変更する場合、回避できます。
これらはファイルシステム名の長さです。「linux」自体にもいくつかあります。たとえば、bits / stdio_lim.hから:
# define FILENAME_MAX 4096
locate
。
Linuxでポータブルな方法でパスの最大長を決定する方法はありません。私のシステムでは:
$ getconf PATH_MAX /
4096
$ getconf _POSIX_PATH_MAX /
4096
しかし、4096文字よりはるかに長いパスを簡単に作成できます。代わりにPATH_MAX
、下限として参照してください。これだけ長いパスを作成できることが保証されていますが、はるかに長いパスを作成できる場合もあります。
os.pathconf()
モジュールにはいくつかの回答があります。Pythonの移植が良ければ、それは合理的なはずです。
システムのlimits.hヘッダーファイルで指定されています。
これらのファイルの1つを次に示します。
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 */
...