Làm thế nào để chia các tập tin lớn hơn thành các phần nhỏ hơn?


189

Tôi có một tệp lớn (ví dụ 8GB). Làm cách nào tôi có thể chia nó thành nhiều phần, giả sử 3 phần bằng nhau và sau đó làm cách nào để tích hợp chúng sau này?


Đây dường như là một bản sao của Askubfox.com/questions/12172/ trên
Jo-Erlend Schinstad

Bạn có chắc chắn "Điều này dường như"?. Heck, đó là điều chính xác tương tự. Ngoại trừ ở đây bây giờ với phần thưởng là "Thêm ví dụ và lựa chọn thay thế."
Luis Alvarado

Nó có thể hữu ích nếu bạn nói thêm về lý do tại sao bạn muốn phân tách nó và liệu bạn có muốn tách nó thành các chuỗi con hay không hoặc liệu bạn có mở chúng ra trong bất kỳ loại kiểm tra lỗi hoặc ghi nhãn nào không. Nếu điều này là để đưa nó lên phương tiện truyền thông nhỏ hơn hoặc để chuyển mạng, tôi sẽ xem xét một cái gì đó như par2 .
poolie


một lớp lót được chia đều cho N: (1.) được chia theo dòng chia - dòng $ (($ (wc -l <$ {your_filename}) / $ {N})) $ {your_filename} (2.) chia byte --bytes $ (($ (wc -c <$ {your_filename}) / $ {N})) $ {your_filename}
Trevor Boyd Smith

Câu trả lời:


272

Có một số cách để thực hiện điều này. Hãy bắt đầu với những cái cơ bản.

Sử dụng lệnh splitcat :

Hãy nói rằng tôi có một hình ảnh và nó quá lớn (10MB). Tất cả những gì tôi làm là:

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

và sau đó để đặt nó lại với nhau, tôi sử dụng con mèo:

cat prefixFiles* > newimage.jpg

Ví dụ:

Giả sử trong thư mục chứa hình ảnh:

split --bytes=1M myimage.jpg new

Nếu hình ảnh nằm trong một thư mục có tên là hình ảnh, bạn cũng có thể làm điều này:

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

Nếu hình ảnh nằm trong thư mục / home / cyrex / hình ảnh, bạn có thể làm điều này:

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

(Trong tất cả các trường hợp trên nó sẽ chia myimage.jpgra từng mảnh 1MB và tiền tố tên của các mảnh với từ mới. Vì vậy, họ sẽ như thế nào newaa, newab, newac, newad...)

Nếu bạn đang chia một tệp Văn bản và muốn chia nó theo dòng, bạn có thể thực hiện việc này:

split -l 1000 book.txt new

Sẽ chia tệp văn bản trong các tệp đầu ra 1000 dòng mỗi dòng. Đây là một cách khác để phân chia một tệp và chủ yếu được sử dụng cho các tệp văn bản như nhật ký, bãi chứa sql, tệp csv, v.v.

Sau đó, tôi hợp nhất chúng

cat new* > newimage.jpg

Đây là một cách. Bạn thậm chí có thể thay đổi kích thước của các mảnh bị tách. Chỉ cần thay đổi phần có --bytes=1Mgiá --bytes=1Ktrị 1 kilobyte hoặc 1G cho giga hoặc một số khác như --bytes=4Kcho các miếng 4KB.

Sử dụng Nautilus

Một cách khác là tùy chọn nén trong gui của Nautilus. Nó cung cấp cho bạn một tùy chọn để tách tệp hoặc tệp bạn muốn nén thành các kích thước megabyte nhỏ hơn. Nó đơn giản và dễ dàng.

Một cách khác là sử dụng 7z

Giả sử bạn có một hình ảnh ISO được gọi là ubuntu.isobạn có thể làm điều này:

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

Điều này sẽ tạo các tệp kích thước 5MB từ ubuntu.iso. Các -v5mlà kích thước khối lượng, do đó bạn có thể thay đổi nó đến 10, 12, 1, 3 và cũng là m có thể được thay đổi để k cho kilobyte, vv; công -mx0tắc báo cho 7-Zip không sử dụng nén, nghĩa là chỉ chia dữ liệu thành nhiều phần.

Để giải nén chỉ cần làm

7z x ubuntu.7z.001

bằng cách này bạn trích xuất tệp đầu tiên và 7z bắt đầu giải nén từ các tệp sau theo thứ tự. Bạn cũng có thể làm

7z e ubuntu.7z.001

có tác dụng tương tự ở đây.


2
Không bao gồm rar vì chưa phải là nguồn mở (Theo như tôi biết) và không thêm Tar vì tôi đang tìm kiếm các cách dễ dàng để thực hiện phân tách.
Luis Alvarado

Thêm gzip nữa - 7zip yêu cầu cài đặt gói iirc
Broam

Đối với những gì tôi biết, Gzip (như tar) không có tùy chọn dễ dàng để phân chia tệp nén. Trong mọi trường hợp tôi đã thấy chúng sử dụng lệnh split để "split" tệp nén. Vì vậy, nó sẽ không phải là một lệnh mà là một nhóm các lệnh để đạt được một mục đích duy nhất có thể được thực hiện với một mục đích duy nhất như tách hoặc 7z. Để cài đặt 7Zip (là p7zip của gói đầy đủ p7zip), nó chưa bao giờ yêu cầu tôi cho iirc;).
Luis Alvarado

Đã thêm chia nhỏ tệp văn bản. Quên về điều đó và hôm nay nó đã xảy ra như vậy tôi cần phải chia một vài tệp CSV. Điều này là cho những bãi mà bạn cần phải có một số dòng cụ thể.
Luis Alvarado

10

Sử dụng split -bvới số lượng thích hợp, bạn có thể nhận được ba mảnh.

Số có thể là:

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

Để lắp ráp lại, sử dụng mèo

cat "file name"* > "file name"

Các trang hướng dẫn sẽ giúp điền vào các chi tiết.


1
Bạn cũng có thể sử dụng split --numberđể cho phép splittính số lượng tệp cho bạn: askubfox.com/questions/54579/ trên
Ciro Santilli 改造

4

HJSplit

Là một chương trình phần mềm miễn phí phổ biến để phân chia và kết hợp lại các tập tin. Chương trình có sẵn trên Windows, Linux và nhiều nền tảng khác.

HJSplit cho Linux là một trình phân tách tệp phần mềm miễn phí cho Linux với giao diện người dùng đồ họa đầy đủ. HJSplit hỗ trợ kích thước tệp trên 100 Gigabyte, Split, Tham gia / Kết hợp lại, tổng kiểm MD5, so sánh tệp, "chạy mà không cần cài đặt" và chương trình hoàn toàn di động.

HJSplit cho Linux không cần phải cài đặt và nó không phụ thuộc vào bất kỳ thư viện đặc biệt nào. Chỉ cần trích xuất kho lưu trữ hjsplitlx.tar.gz vào một thư mục bạn chọn và khởi động chương trình từ trình quản lý tệp Linux hoặc cửa sổ đầu cuối. Bạn có thể cần điều chỉnh quyền truy cập tệp của chương trình thành 'thực thi'.

nhập mô tả hình ảnh ở đây


1
Tôi phải nói rằng tập tin Windows cũng hoạt động trên Linux.
Uri Herrera

2
Có một số cách chia / nối tệp trước khi phải vào một chương trình như thế này. Tôi thay vì sử dụng các tùy chọn mạnh mẽ mà linux cung cấp và để chia tách / hợp nhất các tệp, nó có một số cách thực hiện khá nhanh, an toàn.
Luis Alvarado

3
Nó an toàn, nhanh chóng, và là nền tảng chéo bao gồm LINUX, đây không phải là ứng dụng chỉ dành cho WINDOWS mà chỉ chạy trong Linux ...
Uri Herrera

2
Tôi sử dụng HJSplit, thật tuyệt vời và đơn giản. Không cần phải gõ các lệnh và tên tham số khi bạn chỉ có thể điền các giá trị tham số vào hộp văn bản.
Matthew Đọc

2
Và là một tải về miễn phí làm cho nó tồi tệ hơn bởi vì? và tôi phải nói rằng NGAY BÂY GIỜ TRONG OP HE ASKS CHO PHẦN MỀM MIỄN PHÍ (cái này là miễn phí) và những gì bạn đang đề cập đến được gọi là MỞ, có sự khác biệt nào bạn biết không?.
Uri Herrera

4

Chia tách Gnome? http://gnome-split.org/

Gnome Split là một công cụ cho phép bạn tách các tệp và hợp nhất chúng lại. Nó được viết bằng Java và sử dụng giao diện người dùng GTK + (nhờ vào dự án java-gnome). Mục tiêu là cung cấp một triển khai gốc của các dự án tương tự có thể xử lý nhiều định dạng tệp (ví dụ Xtremsplit).

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


3

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

nhập mô tả hình ảnh ở đây

Từ nhà phát triển:

OZ là cái mà bạn sẽ gọi là 'bộ chia tệp'. Định dạng tệp của nó giống với định dạng được sử dụng bởi phần mềm 'Hacha', một bộ chia nổi tiếng ở Tây Ban Nha và Latinamerica. HOZ là một triển khai C nguồn mở và di động của bộ chia tương thích 'Hacha'.

HOZ nhỏ hơn và nhanh hơn 'Hacha'.

btw, tôi đã sử dụng 'Z' không phải là 'S' trong 'Zource' vì 'hoz' là 'liềm' trong tiếng Tây Ban Nha và vì 'hacha' là từ tiếng Tây Ban Nha có nghĩa là 'ax' ...

Sau khi cài đặt, bạn có thể sử dụng Hoz GUI bằng cách thả ghozvào một thiết bị đầu cuối. Hoạt động đơn giản đến mức không cần giải thích nhưng có thể tiếp cận thêm thông tin trong trang web của nhà phát triển.

Chúc may mắn!


0

Thợ mộc

Một tiện ích phân tách và hợp nhất tệp miễn phí được phát triển trong Java. Đây là một ứng dụng kích thước nhỏ cho phép người dùng phân chia bất kỳ loại tệp nào với kích thước nhỏ hơn tính bằng KB, MB hoặc GB.

Nó có sẵn cho Linux cũng như Windows.

WoodCutter cung cấp 3 cách để hợp nhất lại các tập tin gốc. WoodCutter tạo một tệp hợp nhất có thể được xử lý bởi ứng dụng WoodCutter để nối tất cả các tệp lại. Trong trường hợp người nhận các tệp tách không được cài đặt WoodCutter, thì cũng có thể lấy tệp gốc vì WoodCutter cũng tạo một tệp bó và tệp script Shell để hợp nhất các tệp lại. Tệp bó sẽ được sử dụng trong nền tảng Windows và tập lệnh Shell sẽ được sử dụng trong các nền tảng Linux.

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


2
Giấy phép là "phần mềm miễn phí." Tôi nghĩ rằng một công cụ Phần mềm Tự do trong repos là một giải pháp tốt hơn.
Broam

0

split --number

Đây là một tùy chọn tốt để tạo N tệp có cùng kích thước, ngoại trừ tệp cuối cùng có thể lớn hơn do không thể chia sẻ được. Ví dụ:

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

cho:

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

và:

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

cho:

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

So với -b+ tính toán kích thước rõ ràng, được đề cập tại: https://askubfox.com/a/54584/52975 , tệp cuối cùng có thể lớn hơn gần gấp đôi so với trước đây, đôi khi là nhược điểm của tùy chọn này. Tuy nhiên, việc này thuận tiện hơn nhiều lần vì bạn không phải tự mình thực hiện phép tính kích thước.

Số dòng bằng nhau đã được hỏi tại: https://stackoverflow.com/questions/2016894/how-to-split-a-large-text-file-into-smaller-files-with-equal-number-of-lines

Đã thử nghiệm trong split2.28, Ubuntu 18.04.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.