Daha büyük dosyalar daha küçük parçalara nasıl ayrılır?


189

Büyük bir dosyam var (örneğin 8GB). Bunu nasıl birden fazla parçaya bölebilirim, 3 eşit parça diyelim ve bundan sonra onları nasıl birleştirebilirim?



"Bu gibi görünüyor" dan emin misiniz? Heck, aynı şey. Bunun dışında şimdi "Daha fazla örnek ve alternatif" bonusu var.
Luis Alvarado,

Neden bölmek istediğinizi ve bunun sadece bayt alt dizelerine bölünmesini isteyip istemediğiniz veya herhangi bir hata denetimi veya etiketleme işlemine hazır olup olmadığınız konusunda daha fazla şey söylerseniz, yardımcı olabilir. Bu daha küçük bir ortama ya da ağ transferlerine koymaksa, par2 gibi bir şeye bakardım .
poolie


eşit N ile bölünmüş bir liner: (1.) bölmelere göre bölünmüş bölmeler - satırlar $ (($ (wc -l <$ {your_filename}) / $ {N})) $ {your_filename} (2.) bölünerek bayt bölünmüş - bayt $ (($ (wc -c <$ {your_filename}) / $ {N})) $ {your_filename}
Trevor Boyd Smith

Yanıtlar:


272

Bunu başarmanın birkaç yolu var. Temel olanlarla başlayalım.

Split ve cat komutlarını kullanarak :

Haydi bir görüntüm var ve çok büyük (10MB) diyor. Tek yaptığım:

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

ve sonra bir araya getirmek için kedi kullanıyorum:

cat prefixFiles* > newimage.jpg

Örneğin:

Görüntünün bulunduğu klasörün içinde olduğumu varsayarak:

split --bytes=1M myimage.jpg new

görüntü, görüntü denilen bir dizinin içindeyse, bunu da yapabilirsiniz:

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

Görüntü / home / cyrex / images dizini içindeyse, şunları yapabilirsiniz:

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

(Bu bölünmüş yukarıdaki Bütün durumlarda myimage.jpg1MB parçalar halinde ve yeni kelime ile parçalarının adı öneki. Onlar gibi görünecektir Yani newaa, newab, newac, newad...)

Bir Metin dosyasını bölüyorsanız ve satırlara bölmek istiyorsanız, bunu yapabilirsiniz:

split -l 1000 book.txt new

Metin dosyasını her biri 1000 satırlık çıktı dosyalarına böler. Bu, bir dosyayı bölmenin başka bir yoludur ve çoğunlukla günlükler, sql dökümleri, csv dosyaları vb. Metin dosyaları için kullanılır.

O zaman onları birleştiririm

cat new* > newimage.jpg

Bu bir yoldur. Bölünmüş parçaların boyutunu bile değiştirebilirsiniz. Sadece diyor bölümünü değiştirmek --bytes=1Miçin --bytes=1K1 kilobyte veya 1G giga için, ya da benzeri başka bir numara için --bytes=4K4KB'dir parçaları.

Nautilus Kullanımı

Başka bir yol, Nautilus gui'sindeki sıkıştırma seçeneğidir. Size sıkıştırmak istediğiniz dosyayı veya dosyaları daha küçük megabayt boyutlarında bölme seçeneği sunar. Basit ve kolay.

Yine başka bir yol 7z kullanıyor

Adında bir ISO imgesi bulunduğunu varsayarsak ubuntu.iso, bunu yapabilirsiniz:

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

Bu, 5 MB boyutunda dosyalar oluşturacaktır ubuntu.iso. -v5mBirim boyutu yani 10, 12, 1, 3 değiştirmek ve ayrıca m, kilobayt vb için k değiştirilebilir olduğu; -mx0anahtarı, hiçbir sıkıştırma kullanmak yani sadece bölüme verileri bölmek 7-Zip söyler.

Çıkarmak sadece yapmak

7z x ubuntu.7z.001

bu şekilde ilk dosyayı çıkarırsınız ve 7z sırayla aşağıdaki dosyaları çıkarmaya başlar. Ayrıca yapabilirsiniz

7z e ubuntu.7z.001

Burada da aynı etkiye sahip.


2
Henüz açık kaynak olmadığı için rar dahil etmedi (bildiğim kadarıyla) ve bölünmeyi yapmanın kolay yollarını aradığım için Tar'ı eklemedim.
Luis Alvarado

Gzip de ekleyin - 7zip bir paket kurulumu gerektirir iirc
Broam

Bildiğim kadarıyla, Gzip (tar gibi), sıkıştırılmış dosyayı bölmek için kolay bir seçeneğe sahip değil. Her durumda, onları sıkıştırma dosyasını "bölmek" için split komutunu kullanarak gördüm. Bu yüzden, bir komut değil, bölünmüş veya 7z gibi tek bir hedefle yapılabilecek tek bir amaca ulaşmak için bir grup komut olacaktır. 7Zip'in (p7zip-full paketinin p7zip'i) kurulumu için benden asla iirc istememişti;).
Luis Alvarado,

Metin dosyalarının bölünmesi eklendi. Unuttum ve bugün sadece birkaç CSV dosyasını bölmek için gerekli oldu. Bu, belirli miktarda çizgide olmanız gereken çöplükler içindir.
Luis Alvarado


4

HJSplit

Dosyaları bölmek ve birleştirmek için popüler bir ücretsiz programdır. Program Windows, Linux ve diğer çeşitli platformlarda kullanılabilir.

Linux için HJSplit, tam grafik kullanıcı arayüzü ile Linux için ücretsiz bir dosya ayırıcıdır. HJSplit 100 Gigabayt, Split, Join / Recombine, MD5 sağlama toplamı, dosya karşılaştırması, "yüklemeden çalıştır" dosya boyutlarını destekler ve program tamamen taşınabilirdir.

HJSplit for Linux'un kurulması gerekmez ve herhangi bir özel kütüphaneye bağlı değildir. Hjsplitlx.tar.gz arşivini seçtiğiniz bir dizine kopyalayın ve programı Linux dosya yöneticisinden veya bir terminal penceresinden başlatın. Programın dosya izinlerini 'çalıştırılabilir' olarak ayarlamanız gerekebilir.

görüntü tanımını buraya girin


1
Windows dosyasının Linux üzerinde de çalıştığını söylemeliyim.
Uri Herrera

2
Böyle bir programa gitmek zorunda kalmadan önce bir dosyayı bölmenin / birleştirmenin birkaç yolu vardır. Linux'un sunduğu güçlü seçenekleri ve dosyaları bölmek / birleştirmek için kullanmanın oldukça hızlı, güvenli yollarını kullanmasını tercih ederim.
Luis Alvarado,

3
Güvenli, hızlı, AND LINUX içeren çapraz platform, sadece Linux'ta da çalışan sadece WINDOWS'a ait bir uygulama değil ...
Uri Herrera

2
HJSplit'i kullanıyorum, harika ve basit. Parametre değerlerini sadece metin kutularına doldurabileceğiniz zaman komutları ve parametre adlarını yazmanıza gerek yoktur.
Matthew

2
Ve ücretsiz bir indirme olmak daha da kötüleşiyor, çünkü? ve şunu söylemeliyim ki, BEDAVA YAZILIM DAHA FAZLA ÇALIŞIYOR (ki bu ücretsizdir) ve ne demek istediğin AÇ, ne demek olduğunu bilirsin.
Uri Herrera


3

HOZ - Hacha Açık Zource v1.65 - http://hoz.sourceforge.net/

görüntü tanımını buraya girin

Geliştiriciden:

OZ, 'dosya ayırıcısı' olarak adlandırdığınız şeydir. Dosya formatı İspanya ve Latinamerica'da iyi bilinen bir ayırıcı olan 'Hacha' yazılımı tarafından kullanılan format ile aynıdır. HOZ, 'Hacha' uyumlu bir ayırıcının açık kaynaklı ve taşınabilir bir C uygulamasıdır.

HOZ 'Hacha' dan daha küçük ve daha hızlıdır.

btw, 'Z' 'yerine' S 'yerine' S 'kullandım, çünkü' hoz 'ispanyolcada' orak 've' hacha 'ispanyolca kelimesi olduğundan ...

Kurduktan sonra, ghozbir terminale bırakarak Hoz GUI'yi kullanabilirsiniz . İşlem o kadar basittir ki açıklama gerektirmez, ancak geliştirici sitesinde daha fazla bilgiye ulaşılabilir.

İyi şanslar!


0

Oduncu

Java'da geliştirilen ücretsiz bir dosya bölme ve birleştirme yardımcı programı. Kullanıcının her tür dosyayı daha küçük boyutlarda KB, MB veya GB olarak bölmesine olanak veren küçük boyutlu bir uygulamadır.

Linux gibi Windows için de kullanılabilir.

WoodCutter, orijinal dosyaları birleştirmenin 3 yolunu sunar. WoodCutter, tüm dosyaları birleştirmek için WoodCutter uygulaması tarafından işlenebilen bir birleştirme dosyası oluşturur. Bölünmüş dosyaların alıcısı WoodCutter yüklü değilse, o zaman orijinal dosya da elde edilebilir, çünkü WoodCutter ayrıca dosyaları birleştirmek için bir toplu iş dosyası ve bir Shell komut dosyası oluşturur. Toplu iş dosyası Windows platformunda, Shell script ise Linux platformlarında kullanılacaktır.

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


2
Lisans "ücretsiz" dir. Depodaki Özgür Yazılım aracının daha iyi bir çözüm olduğunu düşünüyorum.
Broam

0

split --number

Bu, bölünmezlik nedeniyle daha büyük olabilecek son dosya dışında, aynı boyutta N dosyaları oluşturmak için iyi bir seçenektir. Örneğin:

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

verir:

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

ve:

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

verir:

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

Https://askubuntu.com/a/54584/52975 adresinde-b belirtilen + açık boyut hesaplamasıyla karşılaştırıldığında , son dosya öncekilerden neredeyse 2 kat daha büyük olabilir, bu bazen bu seçeneğin bir dezavantajıdır. Ancak, birçok kez daha uygundur, çünkü boyut hesaplamasını kendiniz yapmak zorunda değilsiniz.

Eşit sayıda satır istendi: 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'te test edilmiştir .

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.