GNU/Linux >> Tutoriels Linux >  >> Linux

9 exemples utiles de la commande Split sous Linux

Pour vous aider à en savoir plus sur la commande split, j'utilise un fichier texte relativement volumineux contenant 17170 lignes et une taille de 1,4 Mo. Vous pouvez télécharger une copie de ce fichier à partir du lien GitHub.

Notez que je n'afficherai pas directement la sortie dans ces exemples en raison de la grande taille des fichiers. J'utiliserai les commandes ll et wc pour mettre en surbrillance les modifications de fichiers.

Je vous conseille de jeter un coup d'œil rapide à la commande wc pour comprendre la sortie des exemples de commande split.

Exemples de commande Split sous Linux

Voici la syntaxe de la commande Split :

split [options] filename [prefix]

Voyons comment l'utiliser pour diviser des fichiers sous Linux.

1. Diviser les fichiers en plusieurs fichiers

Par défaut, la commande split crée de nouveaux fichiers pour chaque 1000 lignes. Si aucun préfixe n'est spécifié, il utilisera 'x'. Les lettres qui suivent énumèrent les fichiers donc xaa vient en premier, puis xab, et ainsi de suite.

Séparons l'exemple de fichier journal :

split someLogFile.log

Si vous utilisez la commande ls, vous pouvez voir plusieurs nouveaux fichiers dans votre répertoire.

[email protected]:~/Documents$ ls
someLogFile.log  xab  xad  xaf  xah  xaj  xal  xan  xap  xar
xaa              xac  xae  xag  xai  xak  xam  xao  xaq

Vous pouvez utiliser wc pour vérifier rapidement le nombre de lignes après le fractionnement.

[email protected]:~/Documents$ wc -l xaa xaq xar
1000 xaa
1000 xaq
170 xar

Rappelez-vous de tout à l'heure que nous avons vu que notre fichier initial comportait 17 170 lignes. Nous pouvons donc voir que notre programme a fait comme prévu en créant 18 nouveaux fichiers. 17 d'entre eux sont remplis de 1000 lignes chacun, et le dernier contient les 170 lignes restantes.

Une autre façon de démontrer ce qui se passe est d'exécuter la commande avec l'option détaillée. Si vous n'êtes pas familier avec le verbeux, vous manquez quelque chose ! Il fournit des informations plus détaillées sur ce que fait votre système et peut être utilisé avec de nombreuses commandes.

split someLogFile.log --verbose

Vous pouvez voir ce qui se passe avec votre commande sur l'écran :

creating file 'xaa'
creating file 'xab'
creating file 'xac'
creating file 'xad'
creating file 'xae'
creating file 'xaf'
creating file 'xag'
creating file 'xah'
creating file 'xai'
creating file 'xaj'
creating file 'xak'
creating file 'xal'
creating file 'xam'
creating file 'xan'
creating file 'xao'
creating file 'xap'
creating file 'xaq'
creating file 'xar'

2. Diviser les fichiers en plusieurs fichiers avec des numéros de ligne spécifiques

Je comprends que vous n'aimiez peut-être pas que les fichiers soient divisés en fichiers de 1000 lignes. Vous pouvez modifier ce comportement avec -l option.

Lorsque cela est ajouté, vous pouvez maintenant spécifier le nombre de lignes que vous voulez dans chacun des nouveaux fichiers.

split someLogFile.log -l 500

Comme vous pouvez le deviner, les fichiers divisés ont maintenant 500 lignes chacun, sauf la dernière.

[email protected]:~/Documents$ wc -l xbh xbi
500 xbh
170 xbi

Vous avez maintenant beaucoup plus de fichiers, mais avec deux fois moins de lignes dans chacun.

3. Diviser les fichiers en n nombre de fichiers

Le -n L'option facilite la division en un nombre désigné de morceaux ou de morceaux. Vous pouvez attribuer le nombre de fichiers que vous souhaitez en ajoutant une valeur entière après -n.

split someLogFile.log -n 15

Vous pouvez maintenant voir qu'il y a 15 nouveaux fichiers.

[email protected]:~/Documents$ ls
someLogFile.log  xaa  xab  xac  xad  xae  xaf  xag  xah  xai  xaj  xak  xal  xam  xan  xao

4. Diviser les fichiers avec un préfixe de nom personnalisé

Que se passe-t-il si vous souhaitez utiliser split mais conserver le nom d'origine de mon fichier ou créer un nouveau nom au lieu d'utiliser « x » ?

Vous vous souvenez peut-être avoir vu le préfixe dans le cadre de la syntaxe décrite au début de l'article. Vous pouvez écrire votre propre nom de fichier personnalisé après le fichier source.

split someLogFile.log someSeparatedLogFiles.log_

Voici les fichiers fractionnés dont les noms commencent par le préfixe donné.

[email protected]:~/Documents$ ls
someLogFile.log               someSeparatedLogFiles.log_aj
someSeparatedLogFiles.log_aa  someSeparatedLogFiles.log_ak
someSeparatedLogFiles.log_ab  someSeparatedLogFiles.log_al
someSeparatedLogFiles.log_ac  someSeparatedLogFiles.log_am
someSeparatedLogFiles.log_ad  someSeparatedLogFiles.log_an
someSeparatedLogFiles.log_ae  someSeparatedLogFiles.log_ao
someSeparatedLogFiles.log_af  someSeparatedLogFiles.log_ap
someSeparatedLogFiles.log_ag  someSeparatedLogFiles.log_aq
someSeparatedLogFiles.log_ah  someSeparatedLogFiles.log_ar
someSeparatedLogFiles.log_ai

5. Fractionner et spécifier la longueur du suffixe

Split présente une longueur de suffixe par défaut de 2 [aa, ab, etc.]. Cela changera automatiquement à mesure que le nombre de fichiers augmentera, mais si vous souhaitez le modifier manuellement, cela est également possible. Supposons donc que vous souhaitiez que nos fichiers s'appellent quelque chose comme someSeparatedLogFiles.log_aaaab.

Comment pouvez-vous faire cela? L'option -a permet de spécifier la longueur du suffixe.

split someLogFile.log someSeparatedLogFiles.log_ -a 5

Et voici les fichiers divisés :

[email protected]:~/Documents$ ls
someLogFile.log                  someSeparatedLogFiles.log_aaaae  someSeparatedLogFiles.log_aaaaj  someSeparatedLogFiles.log_aaaao
someSeparatedLogFiles.log_aaaaa  someSeparatedLogFiles.log_aaaaf  someSeparatedLogFiles.log_aaaak  someSeparatedLogFiles.log_aaaap
someSeparatedLogFiles.log_aaaab  someSeparatedLogFiles.log_aaaag  someSeparatedLogFiles.log_aaaal  someSeparatedLogFiles.log_aaaaq
someSeparatedLogFiles.log_aaaac  someSeparatedLogFiles.log_aaaah  someSeparatedLogFiles.log_aaaam  someSeparatedLogFiles.log_aaaar
someSeparatedLogFiles.log_aaaad  someSeparatedLogFiles.log_aaaai  someSeparatedLogFiles.log_aaaan

6. Fractionner avec un suffixe d'ordre numérique

Jusqu'à présent, vous avez vu vos fichiers séparés en utilisant différentes combinaisons de lettres. Personnellement, je trouve beaucoup plus facile de distinguer les fichiers à l'aide de numéros.

Conservons la longueur du suffixe de l'exemple précédent, mais changeons l'organisation alphabétique en numérique avec l'option -d .

split someLogFile.log someSeparatedLogFiles.log_ -a 5 -d

Alors maintenant, vous aurez des fichiers fractionnés avec des suffixes numériques.

[email protected]:~/Documents$ ls
someLogFile.log                  someSeparatedLogFiles.log_00004  someSeparatedLogFiles.log_00009  someSeparatedLogFiles.log_00014
someSeparatedLogFiles.log_00000  someSeparatedLogFiles.log_00005  someSeparatedLogFiles.log_00010  someSeparatedLogFiles.log_00015
someSeparatedLogFiles.log_00001  someSeparatedLogFiles.log_00006  someSeparatedLogFiles.log_00011  someSeparatedLogFiles.log_00016
someSeparatedLogFiles.log_00002  someSeparatedLogFiles.log_00007  someSeparatedLogFiles.log_00012  someSeparatedLogFiles.log_00017
someSeparatedLogFiles.log_00003  someSeparatedLogFiles.log_00008  someSeparatedLogFiles.log_00013

7. Ajouter des suffixes hexadécimaux pour diviser les fichiers

Une autre option pour la création de suffixe consiste à utiliser le suffixe hexadécimal intégré qui alterne les lettres et les chiffres ordonnés.

Pour cet exemple, je vais combiner quelques éléments que je vous ai déjà montrés. Je vais diviser le fichier en utilisant mon propre préfixe. J'ai choisi un trait de soulignement pour des raisons de lisibilité.

J'ai utilisé le -x possibilité de créer un suffixe hexadécimal. Ensuite, j'ai divisé notre fichier en 50 morceaux et j'ai donné au suffixe une longueur de 6.

split someLogFile.log _ -x -n50 -a6

Et voici le résultat de la commande ci-dessus :

[email protected]:~/Documents$ ls
_000000  _000003  _000006  _000009  _00000c  _00000f  _000012  _000015  _000018  _00001b  _00001e  _000021  _000024  _000027  _00002a  _00002d  _000030
_000001  _000004  _000007  _00000a  _00000d  _000010  _000013  _000016  _000019  _00001c  _00001f  _000022  _000025  _000028  _00002b  _00002e  _000031
_000002  _000005  _000008  _00000b  _00000e  _000011  _000014  _000017  _00001a  _00001d  _000020  _000023  _000026  _000029  _00002c  _00002f  someLogFile.log

8. Diviser les fichiers en plusieurs fichiers de taille spécifique

Il est également possible d'utiliser la taille du fichier pour diviser les fichiers en fractionnement. Peut-être avez-vous besoin d'envoyer un fichier volumineux sur un réseau limité en taille aussi efficacement que possible. Vous pouvez spécifier la taille exacte selon vos besoins.

La syntaxe peut devenir un peu délicate à mesure que nous continuons à ajouter des options. Donc, je vais vous expliquer comment le -b commande fonctionne avant de montrer l'exemple.

Lorsque vous souhaitez créer des fichiers d'une taille spécifique, utilisez le -b option. Vous pouvez alors écrire n K[B], n M[B], n G[B] où n est la valeur de la taille de votre fichier et K [1024] est -kibi, M est -mebi, G est -gibi, etc. Ko [1000] correspond à un kilo, Mo à un méga, etc.

Il peut sembler qu'il se passe beaucoup de choses, mais ce n'est pas si complexe quand on le décompose. Vous avez spécifié le fichier source, notre préfixe de nom de fichier de destination, un suffixe numérique et une séparation par taille de fichier de 128 Ko.

split someLogFile.log someSeparatedLogFiles.log_ -d -b 128KB

Voici les fichiers divisés :

[email protected]:~/Documents$ ls
someLogFile.log               someSeparatedLogFiles.log_02  someSeparatedLogFiles.log_05  someSeparatedLogFiles.log_08
someSeparatedLogFiles.log_00  someSeparatedLogFiles.log_03  someSeparatedLogFiles.log_06  someSeparatedLogFiles.log_09
someSeparatedLogFiles.log_01  someSeparatedLogFiles.log_04  someSeparatedLogFiles.log_07  someSeparatedLogFiles.log_10

Vous pouvez vérifier le résultat avec la commande "wc".

[email protected]:~/Documents$ wc someSeparatedLogFiles.log_0*
1605    4959  128000 someSeparatedLogFiles.log_00
1605    4969  128000 someSeparatedLogFiles.log_01
1605    4953  128000 someSeparatedLogFiles.log_02
1605    4976  128000 someSeparatedLogFiles.log_03
1605    4955  128000 someSeparatedLogFiles.log_04
1605    4975  128000 someSeparatedLogFiles.log_05
1605    4966  128000 someSeparatedLogFiles.log_06
1605    4964  128000 someSeparatedLogFiles.log_07
1605    4968  128000 someSeparatedLogFiles.log_08
1605    4959  128000 someSeparatedLogFiles.log_09
16050   49644 1280000 total

9. Diviser les fichiers en plusieurs fichiers de taille « Au maximum » n avec

Si vous souhaitez diviser des fichiers à peu près de la même taille, mais conserver la structure de la ligne, cela pourrait être le meilleur choix pour vous. Avec -C , vous pouvez spécifier une taille maximale. Ensuite, le programme divisera automatiquement les fichiers en fonction des lignes complètes.

split someLogFile.log someNewLogFiles.log_ -d -C 1MB

Vous pouvez voir dans la sortie que le premier fichier divisé a une taille de près de 1 Mo, tandis que le reste du fichier se trouve dans le deuxième fichier.

[email protected]:~/Documents$ ll
total 2772
drwxr-xr-x  2 chris chris   81920 Jul 24 22:01 ./
drwxr-xr-x 19 chris chris    4096 Jul 23 22:23 ../
-rw-r--r--  1 chris chris 1369273 Jul 20 17:52 someLogFile.log
-rw-r--r--  1 chris chris  999997 Jul 24 22:01 someNewLogFiles.log_00
-rw-r--r--  1 chris chris  369276 Jul 24 22:01 someNewLogFiles.log_01

Astuce bonus :Rejoindre des fichiers fractionnés

Il ne s'agit pas d'une commande fractionnée, mais elle peut être utile aux nouveaux utilisateurs.

[email protected]:~/Documents$ ls
xaa  xab  xac  xad  xae  xaf  xag  xah  xai  xaj  xak  xal  xam  xan  xao  xap  xaq  xar

Vous pouvez utiliser une autre commande pour rejoindre ces fichiers et créer une réplique de notre document complet. La commande cat est l'abréviation de concaténer qui est juste un mot fantaisiste qui signifie "joindre des éléments ensemble". Étant donné que tous les fichiers commencent par la lettre "x", l'astérisque appliquera la commande à tous les fichiers commençant par cette lettre.

[email protected]:~/Documents$ cat x* > recoveredLogFile.log
[email protected]:~/Documents$ ls
recoveredLogFile.log  xab  xad  xaf  xah  xaj  xal  xan  xap  xar
xaa                   xac  xae  xag  xai  xak  xam  xao  xaq

Comme vous pouvez le voir, notre fichier recréé a la même taille que notre original.

wc -l recreatedLogFile.log
17170 recreatedLogFile.log

Notre mise en forme (y compris le nombre de lignes) est conservée dans le fichier créé.

Si vous êtes nouveau sur Linux, j'espère que ce tutoriel vous a aidé à comprendre la commande split. Si vous êtes plus expérimenté, dites-nous votre façon préférée d'utiliser split dans les commentaires ci-dessous !

Débutant ou expérimenté, je vous suggérerais également de regarder la commande csplit qui est un moyen légèrement meilleur de diviser des fichiers en ligne de commande Linux.


Linux
  1. 12 exemples de commandes Wget utiles sous Linux

  2. Commande ls sous Linux :17 exemples utiles expliqués

  3. Commande mv sous Linux :7 exemples essentiels

  4. Exemples essentiels de la commande File sous Linux

  5. 14 exemples de commandes "cat" utiles sous Linux

Commande Touch sous Linux (5 exemples)

Commande Linux WC avec exemples

9 exemples utiles de commande tactile sous Linux

10 exemples utiles de la commande Sort sous Linux

Exemples essentiels de la commande ps sous Linux

15 exemples super utiles de la commande Find sous Linux