Lösung 1:
Siehe die Wikipedia-Seite zum Vergleich von Dateisystemen, insbesondere in der Spalte Maximale Dateinamenlänge .
Hier sind einige Längenbeschränkungen für Dateinamen in gängigen Dateisystemen:
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
Lösung 2:
Ich habe hier gelesen, dass die Pfadlängenbegrenzung in den Systemheadern steht. Die Längenbeschränkung für Dateinamen ist ebenfalls vorhanden. Auf meinem System ist es die Datei:
/usr/src/linux-headers-2.6.38-10/include/linux/limits.h
und C-lang definiert:
#define NAME_MAX 255 /* # chars in a file name */
#define PATH_MAX 4096 /* # chars in a path name including nul */
und einige mehr.
Lösung 3:
Gibt es Beschränkungen für Dateinamen oder Pfadlängen unter Linux?
Ja, die Länge von Dateinamen und Pfadnamen wird durch :
begrenzt- Dateisystemgrenzen wie von WerkkreW angegeben;
- Konstanten definiert in
linux/limits.h
wie von sfp angegeben.
So erhalten Sie diese Eigenschaften dynamisch:
- Verwenden Sie die Funktionen
pathconf
undfpathconf
wie von Michael Aaron Safyan vorgeschlagen - Erstellen Sie einen immer längeren Dateinamen (oder Pfadnamen), wie von dogbane erklärt
-
Verwenden Sie den Befehl
getconf
wie von tim vorgeschlagen, das auch unter Linux verfügbar ist:$ getconf NAME_MAX /mnt/sda2/ 255 $ getconf PATH_MAX /mnt/sda3/ 4096
Lösung 4:
Und um Zeit zu sparen (und sie im Gedächtnis zu verankern):
ext2, ext3, ext4, zfs:keine Beschränkungen für Pfadnamen; 255 Bytes Dateinamenlimit.
Lösung 5:
Das sind Dateisystemnamenslängen. "linux" selbst hat auch welche. Zum Beispiel aus bits/stdio_lim.h:
# define FILENAME_MAX 4096