Büyük bir dosyayı daha küçük parçalara ayırın


Yanıtlar:


79

Split ve kedi kullanabilirsiniz .

Örneğin bir şey

$ split --bytes 500M --numeric-suffixes --suffix-length=3 foo foo.

(burada giriş dosya adı foove son argüman çıktı önekidir). Bu gibi dosyalar yaratacaktır foo.000 foo.001...

Kısa seçeneklerle aynı komut:

$ split -b 100k -d -a 3 foo foo

Tam bayt sayısı yerine satır sınırlarını bölmek istiyorsanız "- satır bayt" da belirtebilirsiniz.

Oluşturulan parçaları tekrar monte etmek için örneğin:

$ cat foo.* > foo_2

(kabuğun, kabarcıklı kabarma sonuçlarını sıraladığını varsayalım - ve parçaların sayısı sisteme bağlı argüman sınırını aşmaz)

Sonucu ile karşılaştırabilirsiniz:

$ cmp foo foo_2
$ echo $?

(0 çıkması gerekir)

Alternatif olarak, parçaları yeniden monte etmek için find / sort / xargs kombinasyonunu kullanabilirsiniz:

$ find -maxdepth 1 -type f -name 'foo.*'  | sort | xargs cat > foo_3

2
Bu komutu deneyin:man split cat md5sum
Kevin M

6
Montaj sırasında, beklenen son parçanın cat foo.{000..NNN}nerede NNNolduğunu öneririm . Bu sayede parçalardan biri eksikse bir hata mesajı alırsınız. Ancak, -dsayısal sonekleri almak için GNU bölünmesine özgü olduğuna dikkat edin ; diğer platformlarda sen yetinmek zorunda foo.aaa, foo.aabvb
Gilles

1
Ve splitKB = 1000, K = 1024, MB = 1000 * 1000, M = 1024 * 1024 vs. için
Zorawar

1
Bu ... cat > foo_3olmamalı ... cat >>foo_3mı?
alk,

1
Bir yardımcı programını kullanarak ağrıyı hafifletmeye karar verirseniz. rarve 7zipbu tür bölmelerin çapraz platformun yeniden monte edilmesini kolaylaştırmada sıklıkla kullanılır
yapıştırılmış

4

Bir GUI tercih ediyorsanız bunu Archive Manager ile de yapabilirsiniz. 'Kaydet-> Diğer Seçenekler-> Birimlere bölün' başlığına bakın.


5
'komut satırı' olarak etiketledim, ama cevabın için teşekkürler :)
Stefan
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.