Limite sur la longueur du nom de fichier dans bash

les questions suivantes sont destinées à bash et linux seulement:

  1. y a-t-il une limite au nombre de caractères dans le nom de chemin absolu d'un fichier?
  2. y a-t-il une limite au nombre de caractères pour le nom du fichier (sans extension) seulement?

dans l'affirmative, quelles pourraient être ces limites? Comment puis-je y accéder s'ils sont spécifiques au système?

63
demandé sur Sriram 2011-07-04 16:24:08
la source

9 ответов

cela dépend beaucoup du système de fichiers. Pour l'extérieur (actuellement le plus utilisé sur Linux):

  • max filename longueur: 255 octets
  • longueur maximale du trajet: aucune

l'extension n'est pas quelque chose que le FS connaît, il 255 octets, extension incluse (vous pouvez avoir des noms de fichiers sans aucune extension).

ici est une liste plus exhaustive de ces limites, par FS.

il peut également y avoir des extensions à votre système de fichiers qui peuvent changer votre longueur maximale ainsi. Par exemple, eCryptFS qui utilise une partie du nom de fichier inférieur pour conserver les métadonnées et limite le nom de fichier à une longueur maximale de 143 caractères. Voir l'entrée Ubuntu eCryptFS launchpad .

56
répondu e-satis 2015-10-14 19:53:14
la source

Dans un répertoire temp, exécutez:

num=1
while [ true ]
do 
   if ! touch $(printf "%${num}s"  | tr ' ' 'a')
   then
       echo $num
       break
   fi
   ((num++))
done

et j'obtiens:

touch: cannot touch `aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa': File name too long
256

ce qui signifie que ma limite est 255.

34
répondu dogbane 2011-07-04 16:45:06
la source

sur Mac OS X 10.6.7:

man getconf
getconf NAME_MAX /   # 255 bytes
getconf PATH_MAX /   # 1024 bytes

# check file path length with wc before using touch, mkdir, etc.
echo '/very/lllooooonnnnnggggg/file/path.txt' | wc -c
14
répondu tim 2011-07-05 16:36:14
la source

je me réfère à d'autres réponses, s'il vous plaît upvote them.

sur Linux, la longueur des noms de fichiers et des chemins dépend de:

pour obtenir dynamiquement ces propriétés dans :

  • créer un nom de fichier (ou un chemin d'accès) de plus en plus long comme expliqué par dogbane
  • utilisez la commande getconf comme proposé par tim qui est également disponible sur Linux:

    $ getconf NAME_MAX /mnt/sda2/
    255
    $ getconf PATH_MAX /mnt/sda3/
    4096
    
10
répondu olibre 2017-05-23 13:31:38
la source

la spécification UNIX unique mentionne NAME_MAX et PATH_MAX constantes dans limites.h qui peut être lu avec pathconf . Cependant, ceci est très dépendant du système de fichiers, et il est peu probable que vous atteigniez une telle limite.

NOTE: en tant que programmeur, vous ne devez pas coder ces limites. Vous devez utiliser l'allocation dynamique, de sorte qu'il sera toujours tant que le système sous-jacent permet pour ce que vous faites.

7
répondu Michael Aaron Safyan 2011-07-04 16:35:11
la source
  1. y a-t-il une limite au nombre de caractères dans le nom de chemin absolu d'un fichier?

Oui, il y en a.

Voir répondre par la sfp à la question nom de fichier des limites de longueur sur linux? sur le serveur "1519150920 la" faute

en bref:

#define PATH_MAX        4096    /* # chars in a path name including nul */

et pour:

  1. y a-t-il une limite au nombre de caractères pour le nom du fichier (sans extension) seulement?

dans la même réponse liée:

#define NAME_MAX         255    /* # chars in a file name */
3
répondu David Balažic 2017-04-13 15:13:47
la source

cela dépend du système de fichiers utilisé. Par exemple, ext4 a une longueur de nom de fichier maximale de 256 octets et une longueur de chemin illimitée.

Voir Comparaison des systèmes de fichiers pour plus d'.

2
répondu Eugene Yarmash 2011-07-04 16:31:56
la source

ce n'est pas dépendant de bash, c'est dépendant de OS. Sur un mac, c'est 0xff pour un nom de fichier et 0x400 pour un nom de chemin. Ubuntu 9 avait une limite de 144 caractères pour les noms de fichiers.

j'ai trouvé ce lien dans Wikipedia . Il indique les limites de chemin et de nom de fichier pour de nombreux systèmes de fichiers.

2
répondu ncmathsadist 2011-07-04 17:39:44
la source

pour info, sur le Panneau, le nom de fichier limite est actuellement de 242 caractères .

0
répondu jp.rider63 2017-03-16 20:08:55
la source

Autres questions sur