Si encuentras alguna incompatibilidad con tu código o trabajo, recuerda probar siempre en un entorno de testing antes añadir el código al trabajo final.
Solución:
Solución 1:
Consulte la página de Wikipedia sobre la comparación de sistemas de archivos, especialmente en la columna Longitud máxima del nombre de archivo.
Aquí están algunas límites de longitud de nombre de archivo en sistemas de archivos populares:
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
Solución 2:
He leído aquí que el límite de longitud de la ruta está en los encabezados del sistema. El límite de longitud del nombre de archivo también está ahí. En mi sistema es el archivo:
/usr/src/linux-headers-2.6.38-10/include/linux/limits.h
y C-lang define:
#define NAME_MAX 255 /* # chars in a file name */
#define PATH_MAX 4096 /* # chars in a path name including nul */
y algo más.
Solución 3:
Me refiero a otras respuestas, por favor vótelas.
¿Hay algún límite de longitud de ruta o nombre de archivo en Linux?
Sí, las longitudes de nombre de archivo y nombre de ruta están limitadas por:
- límites del sistema de archivos según lo establecido por WerkkreW;
- constantes definidas en
linux/limits.h
como lo indica sfp.
Para obtener dinámicamente estas propiedades:
- Usar funciones
pathconf
yfpathconf
según lo propuesto por Michael Aaron Safyan - Cree un nombre de archivo (o nombre de ruta) más y más largo como lo explica dogbane
-
Usa el comando
getconf
según lo propuesto por tim que también está disponible en Linux:$ getconf NAME_MAX /mnt/sda2/ 255 $ getconf PATH_MAX /mnt/sda3/ 4096
Solución 4:
Y en aras de ahorrar tiempo (y anclarlo a la memoria):
ext2, ext3, ext4, zfs: sin límites de nombre de ruta; Límite de nombre de archivo de 255 bytes.
Solución 5:
Esas son las longitudes de los nombres del sistema de archivos. “Linux” en sí también tiene algunos. Por ejemplo, desde bits/stdio_lim.h:
# define FILENAME_MAX 4096