Maison  >  Article  >  Tutoriel système  >  Guide d'utilisation des fichiers Linux : conseils pour diviser et réorganiser les fichiers

Guide d'utilisation des fichiers Linux : conseils pour diviser et réorganiser les fichiers

王林
王林avant
2024-01-06 16:09:511164parcourir
Présentation Linux dispose de plusieurs programmes utilitaires pour diviser des fichiers. Alors pourquoi voulez-vous diviser le fichier ? Un cas d'utilisation consiste à diviser un fichier volumineux en tailles plus petites afin qu'il puisse tenir sur un support de stockage plus petit, tel qu'une clé USB. Le transfert de fichiers via USB est également une bonne astuce lorsque vous êtes bloqué avec FAT32 (la taille maximale du fichier est de 4 Go) et que vos fichiers sont plus volumineux que cela. Un autre cas d'utilisation consiste à accélérer les transferts de fichiers réseau, car les transferts parallèles de petits fichiers sont généralement plus rapides.

Nous apprendrons à utiliser csplit, split et cat pour réorganiser les fichiers avant de les fusionner. Ces opérations sont utiles pour tout type de fichier : texte, images, fichiers audio, fichiers image ISO, etc.

Diviser les fichiers à l'aide de csplit

csplit est l'une de ces petites commandes amusantes qui est toujours avec vous et vous ne pouvez plus vous en passer une fois que vous commencez à l'utiliser. csplit divise un seul fichier en plusieurs fichiers. Cet exemple montre l'utilisation la plus simple, qui divise le fichier foo.txt en trois fichiers, en utilisant les numéros de ligne 17 et 33 comme points de partage :

$ csplit foo.txt 17 33
2591
3889
2359

csplit crée trois nouveaux fichiers dans le répertoire actuel et affiche la taille des nouveaux fichiers en octets. Par défaut, chaque nouveau fichier est nommé xx_nn :

$ ls
xx00
xx01
xx02

Vous pouvez visualiser les dix premières lignes de chaque nouveau fichier en utilisant la commande head :

$ head xx*
==> xx00 <== Foo File by Carla Schroder Foo text Foo subheading More foo text ==> xx01 <== Foo text Foo subheading More foo text ==> xx02 <==
Foo text
Foo subheading
More foo text

Que faire si vous souhaitez diviser le fichier en plusieurs fichiers contenant le même nombre de lignes ? Vous pouvez spécifier le nombre de lignes puis mettre le nombre de répétitions entre accolades. Cet exemple répète le fractionnement 4 fois et vide le reste dans le dernier fichier :

$ csplit foo.txt 5 {4}
57
1488
249
1866
3798

Vous pouvez utiliser le caractère générique astérisque pour indiquer à csplit de répéter la division autant de fois que possible. Cela semble sympa, mais peut échouer si le fichier ne peut pas être divisé de manière égale (traduction LCTT : les versions inférieures de csplit ne prennent pas en charge ce paramètre) :

$ csplit foo.txt 10 {*}
1545
2115
1848
1901
csplit: '10': line number out of range on repetition 4
1430

Le comportement par défaut consiste à supprimer le fichier de sortie lorsqu'une erreur se produit. Vous pouvez résoudre ce problème avec l'option -k, qui ne supprimera pas le fichier de sortie en cas d'erreur. Un autre comportement est que chaque fois que vous exécutez csplit, il écrasera les fichiers précédemment créés, vous devez donc les enregistrer séparément avec de nouveaux noms de fichiers. Utilisez --prefix= _prefix_ pour définir un préfixe de fichier différent :

$ csplit -k --prefix=mine foo.txt 5 {*}
57
1488
249
1866
993
csplit: '5': line number out of range on repetition 9
437
$ ls
mine00
mine01
mine02
mine03
mine04
mine05

L'option -n peut être utilisée pour modifier le nombre de chiffres en fichiers numériques (la valeur par défaut est 2 chiffres) :

$ csplit -n 3 --prefix=mine foo.txt 5 {4}
57
1488
249
1866
1381
3798
$ ls
mine000
mine001
mine002
mine003
mine004
mine005

Le « c » dans csplit signifie contexte. Cela signifie que vous pouvez diviser des fichiers en fonction de n'importe quel modèle correspondant ou d'expressions régulières intelligentes. L'exemple ci-dessous divise le fichier en deux parties. Le premier fichier se termine sur la ligne contenant la première occurrence de « fie », et le deuxième fichier commence sur la ligne contenant « fie ».

$ csplit foo.txt /fie/

Diviser le fichier à chaque fois que « fie » apparaît :

$ csplit foo.txt /fie/ {*}

Divisez le fichier aux cinq premières occurrences de « fie » :

$ csplit foo.txt /fie/ {5}

Copier uniquement si le contenu commence par une ligne contenant "fie", et omettre tout ce qui précède :

$ csplit myfile %fie%
Diviser les fichiers en différentes tailles

split est similaire à csplit. Il divise les fichiers en tailles spécifiques, ce qui est idéal lorsque vous divisez des fichiers volumineux en petits fichiers multimédias ou utilisez le transfert réseau. La taille par défaut est de 1000 lignes :

$ split foo.mv
$ ls -hl
266K Aug 21 16:58 xaa
267K Aug 21 16:58 xab
315K Aug 21 16:58 xac
[...]

Ils sont divisés en tailles similaires, mais vous pouvez spécifier la taille de votre choix. Dans cet exemple, il s'agit de 20 M d'octets :

$ split -b 20M foo.mv

Les abréviations des unités de dimension sont K, M, G, T, P, E, Z, Y (puissance de 1024) ou KB, MB, GB, etc. (puissance de 1000).

Choisissez votre propre préfixe et suffixe pour les noms de fichiers :

$ split -a 3 --numeric-suffixes=9 --additional-suffix=mine foo.mv SB
240K Aug 21 17:44 SB009mine
214K Aug 21 17:44 SB010mine
220K Aug 21 17:44 SB011mine
L'option

-a contrôle la position des chiffres du numéro. --numeric-suffixes définit la valeur de départ de la numérotation. Le préfixe par défaut est x, vous pouvez également définir un préfixe différent en le saisissant après le nom du fichier.

Fusionner les fichiers fractionnés

Vous souhaiterez peut-être réorganiser vos fichiers à un moment donné. La commande cat couramment utilisée est utilisée ici :

$ cat SB0* > foo2.txt

Le caractère générique astérisque dans l'exemple correspondra à tous les fichiers commençant par SB0, ce qui risque de ne pas vous donner les résultats souhaités. Vous pouvez utiliser le caractère générique du point d'interrogation pour une correspondance plus précise, en utilisant un point d'interrogation par caractère :

$ cat SB0?????? > foo2.txt

Comme toujours, veuillez consulter le manuel et les pages d'informations pertinentes pour connaître les options de commande complètes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer