大きなファイルを小さな部分に分割する方法は?


189

大きなファイル(たとえば8GB)があります。それを複数の部分に分割するにはどうすればいいですか?3つの等しい部分としましょう。その後、それらを後でどのように統合しますか?


これは、の重複であるように思わaskubuntu.com/questions/12172/...
ジョーErlend Schinstad

「これはそうだ」と確信していますか。ちなみに、まったく同じものです。ここを除き、「その他の例と代替案」のボーナスが追加されました。
ルイスアルバラード

なぜ分割したいのか、それを単にバイト部分文字列に分割したいのか、それともあらゆる種類のエラーチェックやラベル付けに包んでもらえるのかについて詳しく説明すると役立つかもしれません。これがより小さなメディアに配置する場合、またはネットワーク転送のために、par2のようなものを見ます。
-poolie


Nで均等に分割するための1つのライナー:(1.)行で分割split --lines $(($(wc -l <​​$ {your_filename})/ $ {N}))$ {your_filename}(2.)split byバイト分割--bytes $(($(wc -c <$ {your_filename})/ $ {N}))$ {your_filename}
トレバーボイドスミス

回答:


272

これを実現するにはいくつかの方法があります。基本的なものから始めましょう。

使用して分割し、のコマンドを:

画像があり、大きすぎる(10MB)と言います。私がしているのは:

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

そして、それをまとめるために猫を使用します:

cat prefixFiles* > newimage.jpg

例えば:

画像があるフォルダ内にいると仮定します:

split --bytes=1M myimage.jpg new

画像がimagesというディレクトリ内にある場合、これも実行できます。

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

イメージがディレクトリ/ home / cyrex / images内にある場合、これを行うことができます。

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

(それ以上のすべてのケースで分割しますmyimage.jpg1MBの作品にして、新しい単語と作品の名前を付けます。彼らは次のようになりますのでnewaanewabnewacnewad...)

テキストファイルを分割していて、行ごとに分割する場合は、次の操作を実行できます。

split -l 1000 book.txt new

これは、テキストファイルをそれぞれ1000行の出力ファイルに分割します。これは、ファイルを分割する別の方法であり、主にログ、SQLダンプ、csvファイルなどのテキストファイルに使用されます。

次に、それらをマージします

cat new* > newimage.jpg

これは一つの方法です。分割されたピースのサイズを変更することもできます。ただ、言う一部変更--bytes=1M--bytes=1Kギガための1キロバイトまたは1Gのために、など別の番号--bytes=4K4KBの作品のために。

Nautilusの使用

別の方法は、NautilusのGUIの圧縮オプションです。圧縮するファイルをより小さなメガバイトサイズに分割するオプションが提供されます。そのシンプルで簡単。

さらに別の方法は7zを使用することです

あなたubuntu.isoはこれを行うことができると呼ばれるISOイメージを持っていると仮定します:

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

これにより、5MBサイズのファイルが作成されますubuntu.iso。これ-v5mはボリュームサイズであるため、10、12、1、3に変更できます。また、キロバイトなどではmをkに変更できます。-mx0スイッチは7-Zipに圧縮を使用しない、つまり、データを部分に分割するように指示します。

抽出するには

7z x ubuntu.7z.001

この方法で最初のファイルを抽出すると、7zは次のファイルから順番に抽出を開始します。あなたもできる

7z e ubuntu.7z.001

ここでも同じ効果があります。


2
まだオープンソースではないので(私が知る限り)、分割を行う簡単な方法を探していたためTarを追加しませんでしたので、rarは含めませんでした。
ルイスアルバラード

同様にgzipを追加- 7zipをはIIRCインストールパッケージが必要
Broam

私の知る限り、Gzip(tarなど)には、圧縮ファイルを分割する簡単なオプションがありません。すべての場合において、私はsplitコマンドを使用して圧縮ファイルを「分割」することを見てきました。したがって、コマンドではなく、splitや7zなどの単一の目的で実行できる単一の目的を達成するためのコマンドのグループになります。7Zip(p7zip-fullパッケージのp7zip)のインストールでは、iircを要求したことはありません;)。
ルイスアルバラード

テキストファイルの分割を追加しました。そのことを忘れてしまったので、今日はたまたま、CSVファイルをいくつか分割する必要がありました。これは、特定の行数である必要があるダンプ用です。
ルイスアルバラード

10

split -b適切な数で使用すると、3つのピースを取得できます。

番号は次のとおりです。

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

再構築するには、catを使用します

cat "file name"* > "file name"

マニュアルページは詳細を記入するのに役立ちます。


1
また、使用することができるsplit --numberようにするsplitあなたのためのファイルの数を計算します。askubuntu.com/questions/54579/...
チロSantilli新疆改造中心法轮功六四事件

4

HJSplit

ファイルを分割して再結合する人気のフリーウェアプログラムです。このプログラムは、Windows、Linux、およびその他のさまざまなプラットフォームで利用できます。

Linux用のHJSplitは、完全なグラフィカルユーザーインターフェイスを備えたLinux用のフリーウェアファイルスプリッターです。HJSplitは、100ギガバイトを超えるファイルサイズ、分割、結合/再結合、MD5チェックサム、ファイル比較、「インストールなしで実行」をサポートし、プログラムは完全に移植可能です。

Linux用のHJSplitはインストールする必要がなく、特別なライブラリに依存しません。hjsplitlx.tar.gzアーカイブを任意のディレクトリに抽出し、Linuxファイルマネージャーまたはターミナルウィンドウからプログラムを起動するだけです。プログラムのファイル許可を「実行可能」に調整する必要がある場合があります。

ここに画像の説明を入力してください


1
WindowsファイルはLinuxでも機能すると言う必要があります。
ウリヘレラ

2
このようなプログラムに移動する前に、ファイルを分割/結合する方法はいくつかあります。私はむしろ、Linuxが提供する強力なオプションを使用します。ファイルの分割/マージには、非常に高速で安全な方法がいくつかあります。
ルイスアルバラード

3
それはあまりにもLinuxでは実行するためにたまたまWindows専用アプリケーションではありません、それは、安全で速く、およびLinuxが含まれ、クロスプラットフォームである...
ウリエレーラ

2
私はHJSplitを使用していますが、それは素晴らしく簡単です。パラメーター値をテキストボックスに入力するだけであれば、コマンドやパラメーター名を入力する必要はありません。
マシュー

2
また、無料でダウンロードすると、さらに悪化します。そして、私はOPの今のところ無料ソフトウェアを求めています(これは無料です)、あなたが言及しているものはオープンと呼ばれていること、あなたは知っている違いがありますか?
ウリエレーラ

4

Gnome split?http://gnome-split.org/

GNOME Splitは、ファイルを分割して元に戻すことができるツールです。Javaで記述され、GTK +ユーザーインターフェイスを使用します(java-gnomeプロジェクトのおかげ)。目標は、複数のファイル形式(Xtremsplitなど)を処理できる同様のプロジェクトのネイティブ実装を提供することです。

http://www.omgubuntu.co.uk/2010/08/split-large-files-easily-in-ubuntu-with-gnome-split/


3

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

ここに画像の説明を入力してください

開発者から:

OZは、「ファイルスプリッター」と呼ばれるものです。そのファイル形式は、スペインとラテンアメリカで有名な「Hacha」ソフトウェアで使用されているものと同じです。HOZは、「Hacha」互換スプリッターのオープンソースでポータブルなC実装です。

HOZは「Hacha」よりも小さくて高速です。

ところで、「hoz」はスペイン語で「鎌」であり、「hacha」は「axe」のスペイン語であるため、「Zource」では「S」の代わりに「Z」を使用しました...

インストール後ghoz、ターミナルにドロップすることでHoz GUIを使用できます。操作は非常に簡単なので、説明は必要ありませんが、開発者のサイトで詳細を確認できます。

幸運を!


0

木こり

Javaで開発された無料のファイル分割およびマージユーティリティ。これは、ユーザーが任意のタイプのファイルをKB、MB、またはGBの小さなサイズに分割できる小さなサイズのアプリケーションです。

LinuxおよびWindowsで使用できます。

WoodCutterには、元のファイルをマージする3つの方法があります。WoodCutterはマージファイルを作成し、WoodCutterアプリケーションで処理してすべてのファイルを結合し直すことができます。分割ファイルの受信者にWoodCutterがインストールされていない場合、WoodCutterはファイルをマージするためのバッチファイルとシェルスクリプトファイルも作成するため、元のファイルも取得できます。バッチファイルはWindowsプラットフォームで使用され、シェルスクリプトはLinuxプラットフォームで使用されます。

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


2
ライセンスは「フリーウェア」です。リポジトリにあるフリーソフトウェアツールはより良い解決策だと思います。
ブラム

0

split --number

これは同じサイズのN個のファイルを生成するのに適したオプションです。ただし、最後のファイルは分割できないために大きくなる可能性があります。例えば:

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

与える:

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

そして:

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

与える:

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

https://askubuntu.com/a/54584/52975-b言及された+明示的なサイズ計算と比較すると、最後のファイルは以前のファイルよりもほぼ2倍大きくなる場合がありますが、これはこのオプションの欠点です。ただし、サイズの計算を自分で行う必要がないため、何度も便利です。

等しい数の行がhttps://stackoverflow.com/questions/2016894/how-to-split-a-large-text-file-into-smaller-files-with-equal-number-of-linesで求められました

split2.28、Ubuntu 18.04でテスト済み。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.