Solution 1 :
Voir la page Wikipedia sur la comparaison des systèmes de fichiers, en particulier dans la colonne Longueur maximale du nom de fichier .
Voici quelques limites de longueur de nom de fichier dans les systèmes de fichiers courants :
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
Solution 2 :
J'ai lu ici que la limite de longueur de chemin est dans les en-têtes du système. La limite de longueur du nom de fichier est là aussi. Sur mon système, c'est le fichier :
/usr/src/linux-headers-2.6.38-10/include/linux/limits.h
et C-lang définit :
#define NAME_MAX 255 /* # chars in a file name */
#define PATH_MAX 4096 /* # chars in a path name including nul */
et quelques autres.
Solution 3 :
Existe-t-il des limites de nom de fichier ou de longueur de chemin sous Linux ?
Oui, la longueur des noms de fichiers et des chemins d'accès est limitée par :
- limites du système de fichiers comme indiqué par WerkkreW ;
- constantes définies dans
linux/limits.h
comme indiqué par sfp.
Pour obtenir dynamiquement ces propriétés :
- Utiliser les fonctions
pathconf
etfpathconf
tel que proposé par Michael Aaron Safyan - Créez un nom de fichier (ou chemin) de plus en plus long comme expliqué par dogbane
-
Utilisez la commande
getconf
comme proposé par tim qui est aussi disponible sur Linux :$ getconf NAME_MAX /mnt/sda2/ 255 $ getconf PATH_MAX /mnt/sda3/ 4096
Solution 4 :
Et pour gagner du temps (et l'ancrer dans la mémoire) :
ext2, ext3, ext4, zfs :aucune limite de nom de chemin ; Limite de nom de fichier de 255 octets.
Solution 5 :
Ce sont des longueurs de nom de système de fichiers. "linux" lui-même en a aussi. Par exemple, depuis bits/stdio_lim.h :
# define FILENAME_MAX 4096