2016-11-15 1 views
1

Supposons qu'un file contenant des chaînes alphanumériques multilignes soit divisé en petits sous-fichiers par taille d'octet. Les sous-fichiers doivent être étiquetés numériquement. Les sous-fichiers résultants sont étiquetés comme prévu jusqu'au sous-fichier 89, mais modifient leur modèle de marquage. Fait intéressant, le modèle d'étiquetage change à nouveau au sous-fichier 9899!Comportement inattendu lors du fractionnement d'un fichier par taille d'octet

$ ls 
file 
subfile00 
subfile01 
... 
subfile89 
subfile9000 # sic! 
subfile9001 
... 
subfile9899 
subfile990000 # sic! 
subfile990001 
... 

Ce motif me semble étrange. Existe-t-il un moyen de diviser le fichier file par octet et de recevoir des sous-fichiers étiquetés en continu de 0 à x, où x = nombre total divisé?

EDIT 1:

$ split --version 
split (GNU coreutils) 8.25 
+0

Tu vas avoir des fichiers conduisant '' dire 0' file001', 'file002',' file100'? – Inian

+0

@Inian Oui, je serais d'accord avec ça. Ainsi, je vais essayer votre suggestion. –

Répondre

2

GNU divisé par des commandes par défaut de la longueur du suffixe doit être ajouté au fichier en utilisant l'option -a (2 valeur par défaut). Vous pouvez passer en avec les chiffres max en fonction du nombre de fichiers séparés en utilisant cette option -a

-a, --suffix-length=N 
    use suffixes of length N (default 2) 

Par ex Si vous pensez que vos fichiers divisés peuvent varier de 1 à 100, vous pouvez exécuter la commande split avec 3 comme longueur de suffixe.

$ split -a 3 -d -b 100 file subfile 
+0

Merci pour cette réponse. Le modèle de dénomination fonctionne correctement si les zéros en tête sont appliqués. –

+0

@MichaelGruenstaeudl: Heureux d'aider! – Inian