Risposte:
Vedi la pagina Wikipedia sul confronto dei file system , specialmente nella colonna Lunghezza massima del nome file .
Ecco alcuni limiti di lunghezza del nome file nei file system più diffusi:
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
Ho letto qui che il limite di lunghezza del percorso è nelle intestazioni di sistema. C'è anche il limite di lunghezza del nome file. Sul mio sistema è il file:
/usr/src/linux-headers-2.6.38-10/include/linux/limits.h
e C-lang definisce:
#define NAME_MAX 255 /* # chars in a file name */
#define PATH_MAX 4096 /* # chars in a path name including nul */
e un po 'di più.
Mi riferisco ad altre risposte, per favore votale.
Esistono limiti di lunghezza del nome file o del percorso su Linux?
Sì, le lunghezze di nome file e percorso sono limitate da:
linux/limits.h
come indicato da sfp .Per ottenere dinamicamente queste proprietà:
pathconf
efpathconf
come proposto da Michael Aaron SafyanUsa il comando getconf
come proposto da tim che è disponibile anche su Linux:
$ getconf NAME_MAX /mnt/sda2/
255
$ getconf PATH_MAX /mnt/sda3/
4096
E per risparmiare tempo (e ancorarlo alla memoria):
ext2, ext3, ext4, zfs: nessun limite di percorso; 255 byte limite di nome file.
PATH_MAX = 4096
, tuttavia. Ciò può essere risolto se il programma è in grado di utilizzare percorsi relativi e si cambia prima la directory di lavoro.
Quelle sono le lunghezze dei nomi del file system. "Linux" stesso ha anche alcuni. Ad esempio, da bits / stdio_lim.h:
# define FILENAME_MAX 4096
locate
.
Non è possibile determinare la lunghezza massima dei percorsi su Linux in modo portatile. Sul mio sistema:
$ getconf PATH_MAX /
4096
$ getconf _POSIX_PATH_MAX /
4096
Ma posso facilmente creare percorsi molto più lunghi di 4096 caratteri. Invece vedi PATH_MAX
come un limite inferiore. Sei sicuro di essere in grado di creare percorsi così a lungo, ma potresti anche essere in grado di creare percorsi molto più lunghi.
os.pathconf()
modulo Python avrà alcune risposte; se la porta Python è buona, dovrebbero essere ragionevoli.
Dovresti sempre usare pathconf o qualche funzione come questa per ottenere il valore di runtime sugli elementi specificati, come diceva questa pagina :
Va notato, tuttavia, che molti dei limiti elencati non sono invarianti e, in fase di esecuzione, il valore del limite può differire da quelli indicati in questa intestazione, per i seguenti motivi:
Il limite dipende dal percorso.
Il limite differisce tra le macchine di compilazione e di runtime.
Per questi motivi, un'applicazione può utilizzare le funzioni fpathconf (), pathconf () e sysconf () per determinare il valore effettivo di un limite in fase di esecuzione.
È specificato nel file di intestazione del sistema limits.h .
Ecco uno di questi file:
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 */
...
Ecco dove si trovano le copie di questo file e i valori che definiscono:
find /usr | grep limits.h | xargs -I {} grep -H 'NAME_MAX' {}
Produzione:
...
/usr/include/linux/limits.h:#define NAME_MAX 255 /* # chars in a file name */
...