Comment diviser des fichiers plus volumineux en parties plus petites?


189

J'ai un gros fichier (8 Go par exemple). Comment puis-je le scinder en plusieurs parties, disons 3 parties égales, et ensuite comment les intégrer plus tard?


Cela semble être un duplicata de askubuntu.com/questions/12172/…
Jo-Erlend Schinstad le

Etes-vous sûr "Cela semble être" ?. Heck, c'est exactement la même chose. Sauf qu'ici, il y a maintenant un bonus de "Plus d'exemples et d'alternatives".
Luis Alvarado

Cela peut être utile si vous en dites plus sur la raison pour laquelle vous voulez le scinder et sur le fait de le scinder uniquement en sous-chaînes d'octets ou si vous êtes prêt à les inclure dans n'importe quel type de vérification d'erreur ou d'étiquetage. S'il s'agit de le placer sur des supports plus petits ou pour des transferts réseau, je regarderais quelque chose comme Par2 .
poolie


une ligne pour le partage égal par N: (1.) divisé par lignes split --lines $ (($ (wc -l <$ {votre_fichier}) / $ {N})) $ {votre_fichier} (2.) divisé par octets split --bytes $ (($ (wc -c <$ {votre_fichier}) / $ {N})) $ {votre_fichier}
Trevor Boyd Smith

Réponses:


272

Il y a plusieurs façons d'accomplir cela. Commençons par les bases.

Utilisation des commandes split et cat :

Disons que j'ai une image et que c'est trop gros (10Mo). Tout ce que je fais c'est:

split --bytes=1M /path/to/image/image.jpg /path/to/image/prefixForNewImagePieces

et puis pour le mettre ensemble j'utilise le chat:

cat prefixFiles* > newimage.jpg

Par exemple:

En supposant que je suis dans le dossier où se trouve l'image:

split --bytes=1M myimage.jpg new

Si l'image se trouve dans un répertoire appelé images, vous pouvez également le faire:

split --bytes=1M images/myimage.jpg new

Si l'image se trouve dans le répertoire / home / cyrex / images, vous pouvez le faire:

split --bytes=1M /home/cyrex/images/myimage.jpg new

(Dans tous les cas , au- dessus se diviser myimage.jpgen morceaux et le préfixe 1MB le nom des morceaux avec le mot nouveau. Ils ressembleraient newaa, newab, newac, newad...)

Si vous divisez un fichier texte et souhaitez le scinder en lignes, vous pouvez le faire:

split -l 1000 book.txt new

Ce qui divisera le fichier texte en fichiers de sortie de 1000 lignes chacun. Ceci est une autre façon de diviser un fichier et est principalement utilisé pour les fichiers texte tels que les journaux, les dumps SQL, les fichiers csv, etc.

Puis je les fusionne

cat new* > newimage.jpg

C'est une façon. Vous pouvez même changer la taille des pièces fendues. Il suffit de changer la partie qui dit --bytes=1Mà --bytes=1Kpour 1 kilo - octet ou 1G pour giga, ou un autre numéro comme --bytes=4Kpour les pièces de 4Ko.

Utiliser Nautilus

Une autre façon est l'option de compression dans l'interface graphique de Nautilus. Il vous offre la possibilité de scinder le ou les fichiers que vous souhaitez compresser en mégaoctets plus petits. C'est simple et facile.

Une autre façon utilise 7z

En supposant que vous ayez une image ISO appelée, ubuntu.isovous pouvez le faire:

7z a -v5m -mx0 ubuntu.7z ubuntu.iso

Cela créera des fichiers de taille 5MB à partir du fichier ubuntu.iso. Le -v5mest la taille du volume afin que vous puissiez le changer à 10, 12, 1, 3 et aussi le m peut être changé à k pour kilo-octets, etc. le -mx0commutateur indique à 7-Zip de ne pas utiliser de compression, c'est-à-dire de scinder les données en plusieurs parties.

Pour extraire il suffit de

7z x ubuntu.7z.001

De cette façon, vous extrayez le premier fichier et 7z commence à extraire les fichiers suivants dans l'ordre. Tu peux aussi faire

7z e ubuntu.7z.001

qui a le même effet ici.


2
N'inclut pas rar puisque n'est pas encore open source (pour autant que je sache) et n'ajoute pas Tar car je cherchais des moyens simples de faire la scission.
Luis Alvarado

Ajoutez également gzip - 7zip nécessite un paquet install iirc
Broam

Pour ce que je sais, Gzip (comme tar) n’a pas une option facile pour diviser le fichier compressé. Dans tous les cas, je les ai vus en utilisant la commande split pour "scinder" le fichier compressé. Donc, ce ne serait pas une commande mais un groupe de commandes pour atteindre un seul but qui peut être fait avec un seul comme split ou 7z. Pour l'installation de 7Zip (qui est le p7zip du paquet p7zip-full), il ne m'a jamais demandé d'iirc;).
Luis Alvarado

Ajout du fractionnement des fichiers texte. Oublié cela et aujourd'hui, il m'est arrivé de scinder deux fichiers CSV. C’est pour les dumps que vous devez avoir un nombre spécifique de lignes.
Luis Alvarado

10

En utilisant split -ble nombre approprié, vous pouvez obtenir trois pièces.

Le nombre pourrait être:

size=$(wc -c <"file name")
one_third=$((size/3+1))

Pour remonter, utilisez un chat

cat "file name"* > "file name"

Les pages de manuel vous aideront à remplir les détails.


1
Vous pouvez également utiliser split --numberlaisser laisser splitcalculer le nombre de fichiers pour vous: askubuntu.com/questions/54579/…
Ciro Santilli

4

HJSplit

Est un logiciel gratuit populaire pour scinder et recombiner des fichiers. Le programme est disponible sur Windows, Linux et une variété d'autres plates-formes.

HJSplit for Linux est un séparateur de fichiers gratuit pour Linux avec une interface utilisateur graphique complète. HJSplit prend en charge des tailles de fichiers de plus de 100 gigaoctets, Split, Join / Recombine, des sommes de contrôle MD5, la comparaison de fichiers, "exécuter sans installer" et le programme est entièrement portable.

HJSplit pour Linux n'a pas besoin d'être installé et ne dépend d'aucune bibliothèque spéciale. Il suffit d'extraire l'archive hjsplitlx.tar.gz dans un répertoire de votre choix et de lancer le programme à partir du gestionnaire de fichiers Linux ou d'une fenêtre de terminal. Vous devrez peut-être ajuster les autorisations de fichier du programme sur "exécutable".

entrez la description de l'image ici


1
Dois-je dire que le fichier Windows fonctionne également sous Linux.
Uri Herrera

2
Il existe plusieurs façons de scinder / joindre un fichier avant de devoir utiliser un programme comme celui-ci. J'utilise plutôt les puissantes options offertes par Linux et pour scinder / fusionner des fichiers, il existe des moyens assez rapides et sûrs de le faire.
Luis Alvarado

3
Sûr, rapide, et multiplate-forme incluant LINUX, ce n’est pas une application exclusivement Windows fonctionnant sous Linux…
Uri Herrera le

2
J'utilise HJSplit, c'est génial et simple. Nul besoin de saisir des commandes et des noms de paramètres lorsque vous pouvez simplement renseigner les valeurs des paramètres dans des zones de texte.
Matthew Read

2
Et être un téléchargement gratuit fait qu'empirer les choses parce que? et dois-je dire que nulle part dans le PO IL DEMANDE DE LOGICIEL GRATUIT (ce qui est, c'est gratuit) et ce que vous faites référence à s'appelle OPEN, il y a une différence, vous savez?.
Uri Herrera


3

HOZ - Hacha Open Zource v1.65 - http://hoz.sourceforge.net/

entrez la description de l'image ici

Du développeur:

OZ est ce que vous appelleriez un «séparateur de fichiers». Son format de fichier est identique à celui utilisé par le logiciel 'Hacha', un séparateur bien connu en Espagne et en Amérique latine. HOZ est une implémentation C open source et portable d’un séparateur compatible 'Hacha'.

HOZ est plus petit et plus rapide que 'Hacha'.

En fait, j'ai utilisé un 'Z' au lieu d'un 'S' dans 'Zource' parce que 'hoz' est 'falle' en espagnol, et comme 'hacha' est le mot espagnol pour 'hache' ...

Après l’installation, vous pouvez utiliser l’interface graphique Hoz en déposant ghozun terminal. L’opération est si simple qu’elle n’a besoin d’aucune explication, mais vous pouvez obtenir des informations complémentaires sur le site du développeur.

Bonne chance!


0

Bûcheron

Un utilitaire gratuit de fractionnement et de fusion de fichiers développé en Java. Il s’agit d’une application de petite taille qui permet à un utilisateur de scinder tout type de fichier en tailles moins importantes en Ko, Mo ou Go.

Il est disponible pour Linux ainsi que Windows.

WoodCutter propose 3 façons de fusionner les fichiers d'origine. WoodCutter crée un fichier de fusion qui peut être traité par l'application WoodCutter pour réunir tous les fichiers. Si WoodCutter n'est pas installé sur le récepteur des fichiers scindés, le fichier d'origine peut également être obtenu, car WoodCutter crée également un fichier de traitement par lots et un fichier de script Shell pour fusionner les fichiers. Le fichier de commandes sera utilisé sur la plate-forme Windows et le script Shell sur les plates-formes Linux.

http://java-puzzle.blogspot.com/2009/07/woodcutter.html


2
La licence est "freeware". Je pense qu'un outil de logiciel libre qui est dans le dépôt est une meilleure solution.
Broam

0

split --number

C'est une bonne option pour générer N fichiers avec la même taille, à l'exception du dernier qui pourrait être plus volumineux en raison de son indivisibilité. Par exemple:

printf '0123456789' > f.txt
split -d --number 2 f.txt f.txt.part.
tail f.txt.part.*

donne:

==> f.txt.part.00 <==
01234
==> f.txt.part.01 <==
56789

et:

split -d --number 3 f.txt f.txt.part.
tail f.txt.part.*

donne:

==> f.txt.part.00 <==
012
==> f.txt.part.01 <==
345
==> f.txt.part.02 <==
6789

Comparé au -bcalcul explicite de la taille, mentionné à l' adresse : https://askubuntu.com/a/54584/52975 , le dernier fichier peut être presque deux fois plus volumineux que les précédents, ce qui constitue parfois un inconvénient pour cette option. Il est cependant plus pratique à plusieurs reprises, car vous n’avez pas à faire le calcul de la taille vous-même.

Un nombre égal de lignes a été demandé à l' adresse suivante : https://stackoverflow.com/questions/2016894/how-to-split-a-large-text-file-into-smaller-files-with-equal-number-of-lines

Testé en split2.28, Ubuntu 18.04.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.