Bagaimana cara membagi file yang lebih besar menjadi bagian yang lebih kecil?


189

Saya punya file besar (8GB untuk Contoh). Bagaimana saya bisa membaginya menjadi beberapa bagian, katakanlah 3 bagian yang sama, dan setelah itu bagaimana saya mengintegrasikannya nanti?


Ini tampaknya merupakan duplikat dari askubuntu.com/questions/12172/…
Jo-Erlend Schinstad

Apakah Anda yakin "Sepertinya ini"? Heck, itu adalah hal yang persis sama. Kecuali di sini sekarang dengan bonus "Lebih banyak contoh dan alternatif."
Luis Alvarado

Mungkin membantu jika Anda mengatakan lebih banyak tentang mengapa Anda ingin membaginya, dan apakah Anda ingin membaginya menjadi beberapa substring byte atau apakah Anda terbuka untuk membungkusnya dengan segala jenis pengecekan atau pelabelan kesalahan. Jika ini untuk meletakkannya di media yang lebih kecil atau untuk transfer jaringan saya akan melihat sesuatu seperti par2 .
poolie


satu liner untuk sama-sama dibagi dengan N: (1.) dipisah oleh garis-garis - baris $ (($ (wc-l <$ {your_filename}) / $ {N})) $ {your_filename} (2.) dibagi dengan bytes split --bytes $ (($ (wc -c <$ {your_filename}) / $ {N})) $ {your_filename}
Trevor Boyd Smith

Jawaban:


272

Ada beberapa cara untuk mencapai ini. Mari kita mulai dengan yang dasar.

Menggunakan perintah split dan cat :

Katakanlah saya memiliki gambar dan ukurannya terlalu besar (10MB). Yang saya lakukan adalah:

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

dan kemudian menggabungkannya saya menggunakan cat:

cat prefixFiles* > newimage.jpg

Sebagai contoh:

Dengan asumsi saya berada di dalam folder di mana gambar itu berada:

split --bytes=1M myimage.jpg new

jika gambar ada di dalam direktori bernama gambar, Anda juga dapat melakukan ini:

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

Jika gambar ada di dalam direktori / home / cyrex / images Anda dapat melakukan ini:

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

(Dalam semua kasus di atas akan terpecah myimage.jpg-pecah 1MB dan awalan nama potongan-potongan dengan kata baru. Jadi mereka akan terlihat seperti newaa, newab, newac, newad...)

Jika Anda memisahkan file teks dan ingin membaginya dengan baris, Anda dapat melakukan ini:

split -l 1000 book.txt new

Yang akan membagi file teks dalam file output masing-masing 1000 baris. Ini adalah cara lain untuk membagi file dan sebagian besar digunakan untuk file teks seperti log, sql dumps, file csv, dll.

Lalu saya menggabungkan mereka

cat new* > newimage.jpg

Ini satu arah. Anda bahkan dapat mengubah ukuran potongan yang pecah. Hanya mengubah bagian yang mengatakan --bytes=1Muntuk --bytes=1Kselama 1 kilobyte atau 1G untuk giga, atau nomor lain seperti --bytes=4Kpotongan 4KB.

Menggunakan Nautilus

Cara lain adalah opsi kompres di gui Nautilus. Ini memberi Anda opsi untuk membagi file atau file yang ingin Anda kompres menjadi ukuran megabyte yang lebih kecil. Sederhana dan mudah.

Namun cara lain adalah menggunakan 7z

Dengan asumsi Anda memiliki image ISO yang disebut ubuntu.isoAnda bisa melakukan ini:

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

Ini akan membuat file ukuran 5MB dari ubuntu.iso. Ini -v5madalah ukuran volume sehingga Anda dapat mengubahnya ke 10, 12, 1, 3 dan juga m dapat diubah menjadi k untuk kilobyte, dll; yang -mx0beralih mengatakan 7-Zip untuk tidak menggunakan kompresi, yaitu, hanya untuk membagi data menjadi bagian-bagian.

Untuk mengekstrak cukup lakukan

7z x ubuntu.7z.001

dengan cara ini Anda mengekstrak file pertama dan 7z mulai mengekstraksi dari file berikut secara berurutan. Anda juga bisa melakukannya

7z e ubuntu.7z.001

yang memiliki efek yang sama di sini.


2
Tidak memasukkan rar karena belum open source (Sejauh yang saya tahu) dan tidak menambahkan Tar karena saya mencari cara mudah untuk melakukan split.
Luis Alvarado

Tambahkan gzip juga - 7zip membutuhkan paket instal iirc
Broam

Untuk apa yang saya tahu, Gzip (seperti tar) tidak memiliki opsi yang mudah untuk membagi file terkompresi. Dalam semua kasus saya telah melihat mereka menggunakan perintah split untuk "membagi" file kompres. Jadi itu tidak akan menjadi perintah tetapi sekelompok perintah untuk mencapai satu tujuan yang dapat dilakukan dengan satu seperti split atau 7z. Untuk pemasangan 7Zip (yang merupakan paket p7zip dari paket p7zip-penuh), ia tidak pernah meminta saya untuk iirc;).
Luis Alvarado

Menambahkan pemisahan file teks. Lupa tentang itu dan hari ini kebetulan saya perlu membagi beberapa file CSV. Ini untuk dump yang Anda butuhkan dari jumlah garis tertentu.
Luis Alvarado


4

HJSplit

Merupakan program freeware populer untuk memecah dan menggabungkan kembali file. Program ini tersedia di Windows, Linux dan berbagai platform lainnya.

HJSplit untuk Linux adalah pembagi file freeware untuk Linux dengan antarmuka pengguna grafis lengkap. HJSplit mendukung ukuran file lebih dari 100 Gigabytes, Split, Join / Recombine, MD5 checksum, membandingkan file, "jalankan tanpa instalasi" dan program ini sepenuhnya portabel.

HJSplit untuk Linux tidak perlu diinstal dan tidak tergantung pada pustaka khusus. Cukup ekstrak arsip hjsplitlx.tar.gz ke direktori pilihan Anda dan mulai program dari manajer file Linux atau jendela terminal. Anda mungkin perlu menyesuaikan izin file program untuk 'dieksekusi'.

masukkan deskripsi gambar di sini


1
Haruskah saya katakan bahwa file Windows juga berfungsi di Linux.
Uri Herrera

2
Ada beberapa cara pemisahan / bergabung dengan file sebelum harus pergi ke program seperti ini. Saya lebih suka menggunakan opsi kuat yang ditawarkan linux dan untuk memisahkan / menggabungkan file, ia memiliki beberapa cara yang cukup cepat dan aman untuk melakukannya.
Luis Alvarado

3
Itu aman, cepat, DAN adalah lintas-platform yang mencakup LINUX, itu bukan aplikasi WINDOWS saja yang kebetulan berjalan di Linux juga ...
Uri Herrera

2
Saya menggunakan HJSplit, bagus dan sederhana. Tidak perlu mengetikkan perintah dan nama parameter saat Anda bisa mengisi nilai parameter ke dalam kotak teks.
Matius Baca

2
Dan menjadi unduhan gratis membuatnya lebih buruk karena? dan haruskah saya mengatakan bahwa DI MANA SAJA DIA, DIA MEMINTA PERANGKAT LUNAK GRATIS (yang ini gratis) dan apa yang Anda maksudkan disebut OPEN, apakah ada perbedaan yang Anda ketahui ?.
Uri Herrera


3

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

masukkan deskripsi gambar di sini

Dari pengembang:

OZ adalah apa yang Anda sebut 'file splitter'. Format file-nya sama dengan yang digunakan oleh perangkat lunak 'Hacha', splitter terkenal di Spanyol dan Latinamerica. HOZ adalah implementasi open-source dan portabel C dari splitter kompatibel 'Hacha'.

HOZ lebih kecil dan lebih cepat dari 'Hacha'.

btw, saya menggunakan 'Z' bukan dari 'S' di 'Zource' karena 'hoz' adalah 'sabit' dalam bahasa Spanyol, dan karena 'hacha' adalah kata bahasa Spanyol untuk 'kapak' ...

Setelah menginstal, Anda dapat menggunakan GUI Hoz dengan menjatuhkan ghozterminal. Operasi ini sangat sederhana sehingga tidak perlu penjelasan tetapi informasi lebih lanjut dapat dihubungi di situs pengembang.

Semoga berhasil!


0

Penebang

Utilitas pemisahan dan penggabungan file gratis dikembangkan di Jawa. Ini adalah aplikasi ukuran kecil yang memungkinkan pengguna untuk membagi semua jenis file dalam ukuran yang lebih kecil dalam KB, MB atau GB.

Ini tersedia untuk Linux dan juga Windows.

WoodCutter menawarkan 3 cara untuk menggabungkan kembali file asli. WoodCutter membuat file gabungan yang dapat diproses oleh aplikasi WoodCutter untuk menggabungkan semua file kembali. Dalam hal penerima file split tidak memiliki WoodCutter diinstal, maka juga file asli dapat diperoleh karena WoodCutter juga membuat file batch dan file skrip Shell untuk menggabungkan file kembali. File batch akan digunakan dalam platform Windows dan skrip Shell akan digunakan dalam platform Linux.

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


2
Lisensi adalah "freeware." Saya pikir alat Perangkat Lunak Bebas yang ada di dalam repo adalah solusi yang lebih baik.
Broam

0

split --number

Ini adalah opsi yang baik untuk menghasilkan file N dengan ukuran yang sama, kecuali untuk yang terakhir yang mungkin lebih besar karena tidak dapat dipisahkan. Misalnya:

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

memberi:

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

dan:

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

memberi:

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

Dibandingkan dengan -b+ perhitungan ukuran eksplisit, yang disebutkan di: https://askubuntu.com/a/54584/52975 , file terakhir mungkin hampir 2x lebih besar dari yang sebelumnya, yang kadang-kadang merupakan kerugian dari opsi ini. Namun itu lebih nyaman berkali-kali, karena Anda tidak perlu melakukan perhitungan ukuran sendiri.

Jumlah baris yang sama ditanyakan di: https://stackoverflow.com/questions/2016894/how-to-split-a-large-text-file-into-smaller-files-with-equal-number-of-lines

Diuji dalam split2.28, Ubuntu 18.04.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.