Jak podzielić większe pliki na mniejsze części?


189

Mam duży plik (na przykład 8 GB). Jak mogę podzielić go na wiele części, powiedzmy 3 równe części, a potem jak je później zintegrować?



Czy na pewno „To wydaje się być”? Cholera, to dokładnie to samo. Z wyjątkiem tutaj jest teraz premia „Więcej przykładów i alternatyw”.
Luis Alvarado,

Może to pomóc, jeśli powiesz więcej o tym, dlaczego chcesz go podzielić, i czy chcesz podzielić go tylko na bajtowe podciągi lub czy jesteś otwarty na to, że zostaną one owinięte w dowolny rodzaj sprawdzania błędów lub etykietowania. Jeśli to ma być umieszczone na mniejszych nośnikach lub do transferów sieciowych, spojrzałbym na coś w rodzaju par2 .
poolie


jeden linijka dla równego podziału przez N: (1.) podzielony przez linie podzielony - linie $ (($ (wc -l <$ {twoja_nazwa_pliku}) / $ {N})) $ {twoja_nazwa_pliku} (2.) podzielone przez bajty podzielone - bajty $ (($ (wc -c <$ {nazwa_pliku}) / $ {N})) $ {nazwa_pliku}
Trevor Boyd Smith

Odpowiedzi:


272

Można to osiągnąć na kilka sposobów. Zacznijmy od podstawowych.

Używanie poleceń split i cat :

Powiedzmy, że mam obraz i jest za duży (10 MB). Wszystko co robię to:

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

a następnie, aby to złożyć, używam cat:

cat prefixFiles* > newimage.jpg

Na przykład:

Zakładając, że jestem w folderze, w którym znajduje się obraz:

split --bytes=1M myimage.jpg new

jeśli obraz znajduje się w katalogu o nazwie obrazy, możesz to również zrobić:

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

Jeśli obraz znajduje się w katalogu / home / cyrex / images, możesz to zrobić:

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

(We wszystkich przypadkach powyżej będzie podzielone myimage.jpgna kawałki 1 MB i poprzedzić nazwę kawałków z nowego słowa. Więc będą one wyglądać newaa, newab, newac, newad...)

Jeśli dzielisz plik tekstowy i chcesz podzielić go na linie, możesz to zrobić:

split -l 1000 book.txt new

Który podzieli plik tekstowy na pliki wyjściowe o długości 1000 wierszy każdy. Jest to inny sposób podziału pliku i jest najczęściej używany do plików tekstowych, takich jak dzienniki, zrzuty sql, pliki csv itp.

Następnie łączę je

cat new* > newimage.jpg

To jest jeden sposób. Możesz nawet zmienić rozmiar podzielonych elementów. Wystarczy zmienić część, która mówi --bytes=1Mdo --bytes=1K1 kilobajt lub 1G dla giga lub inny numer jak --bytes=4Kna kawałki 4KB.

Korzystanie z Nautilus

Innym sposobem jest opcja kompresji w gui Nautilusa. Daje możliwość podzielenia pliku lub plików, które chcesz skompresować, na mniejsze rozmiary megabajtów. To proste i łatwe.

Jeszcze innym sposobem jest użycie 7z

Zakładając, że masz obraz ISO o nazwie, ubuntu.isomożesz to zrobić:

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

Spowoduje to utworzenie plików o rozmiarze 5 MB z pliku ubuntu.iso. Jest -v5mto rozmiar woluminu, więc możesz go zmienić na 10, 12, 1, 3, a także m można zmienić na k dla kilobajtów itp .; -mx0przełącznik mówi 7-Zip używać bez kompresji, czyli po prostu podzielić dane na części.

Aby wyodrębnić, po prostu zrób

7z x ubuntu.7z.001

w ten sposób wypakujesz pierwszy plik, a program 7z rozpocznie wypakowywanie kolejno następujących plików. Możesz też zrobić

7z e ubuntu.7z.001

co ma ten sam efekt tutaj.


2
Nie uwzględniłem rar, ponieważ nie jest jeszcze open source (o ile wiem) i nie dodałem Tar, ponieważ szukałem łatwych sposobów na podzielenie.
Luis Alvarado,

Dodaj gzip, jak również - 7zip wymaga zainstalowania pakietu IIRC
Broam

Z tego co wiem, Gzip (jak tar) nie ma łatwej opcji podzielenia skompresowanego pliku. We wszystkich przypadkach widziałem je za pomocą polecenia split w celu „podzielenia” pliku kompresji. Więc nie byłoby to polecenie, ale grupa poleceń, aby osiągnąć jeden cel, który można wykonać za pomocą jednego polecenia, takiego jak split lub 7z. Do instalacji 7Zip (który jest p7zip pakietu p7zip-full) nigdy nie prosił mnie o iirc;).
Luis Alvarado,

Dodano podział plików tekstowych. Zapomniałem o tym i dzisiaj tak się stało, że musiałem podzielić kilka plików CSV. Dotyczy to zrzutów, które muszą mieć określoną liczbę wierszy.
Luis Alvarado,


4

HJSplit

Jest popularnym darmowym programem do dzielenia i ponownego łączenia plików. Program jest dostępny na Windows, Linux i wiele innych platform.

HJSplit dla systemu Linux to darmowy rozdzielacz plików dla systemu Linux z pełnym graficznym interfejsem użytkownika. HJSplit obsługuje pliki o wielkości ponad 100 gigabajtów, Split, Join / Recombine, sumy kontrolne MD5, porównywanie plików, „uruchamianie bez instalacji”, a program jest w pełni przenośny.

HJSplit dla systemu Linux nie musi być instalowany i nie zależy od żadnych specjalnych bibliotek. Po prostu rozpakuj archiwum hjsplitlx.tar.gz do wybranego katalogu i uruchom program z menedżera plików systemu Linux lub okna terminalu. Może być konieczne dostosowanie uprawnień do plików programu do „wykonywalnego”.

wprowadź opis zdjęcia tutaj


1
Muszę powiedzieć, że plik Windows działa również w systemie Linux.
Uri Herrera

2
Istnieje kilka sposobów dzielenia / łączenia pliku przed przejściem do takiego programu. Raczej używam potężnych opcji, które oferuje linux, a do dzielenia / scalania plików ma dość szybkie i bezpieczne sposoby.
Luis Alvarado,

3
Jest bezpieczny, szybki ORAZ jest wieloplatformowy, który zawiera LINUX, to nie jest tylko aplikacja WINDOWS, która po prostu działa również w systemie Linux ...
Uri Herrera

2
Używam HJSplit, jest świetny i prosty. Nie trzeba wpisywać poleceń i nazw parametrów, gdy można po prostu wypełnić wartości parametrów w polach tekstowych.
Matthew

2
A bycie bezpłatnym pobieraniem pogarsza to, ponieważ? i muszę powiedzieć, że NIGDY W OPIE ZAPYTA O DARMOWE OPROGRAMOWANIE (które jest bezpłatne), a to, o czym mówisz, nazywa się OTWARTE, jest różnica, którą znasz?
Uri Herrera,


3

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

wprowadź opis zdjęcia tutaj

Od dewelopera:

OZ to tak zwany „rozdzielacz plików”. Format pliku jest taki sam, jak w oprogramowaniu „Hacha”, dobrze znanym spliterze w Hiszpanii i Ameryce Łacińskiej. HOZ to otwarta i przenośna implementacja C splittera kompatybilnego z „Hacha”.

HOZ jest mniejszy i szybszy niż „Hacha”.

btw, użyłem „Z” odmiany „S” w „Zource”, ponieważ „hoz” to po hiszpańsku sierp, a ponieważ „hacha” to hiszpańskie słowo „ax” ...

Po instalacji możesz użyć interfejsu GUI Hoz, upuszczając ghozterminal. Operacja jest tak prosta, że ​​nie wymaga wyjaśnienia, ale można uzyskać dodatkowe informacje na stronie dewelopera.

Powodzenia!


0

Drwal

Darmowe narzędzie do dzielenia i scalania plików opracowane w Javie. Jest to aplikacja o małym rozmiarze, która pozwala użytkownikowi dzielić dowolny typ pliku na mniejsze rozmiary w KB, MB lub GB.

Jest dostępny zarówno dla systemu Linux, jak i Windows.

WoodCutter oferuje 3 sposoby łączenia oryginalnych plików. WoodCutter tworzy plik scalania, który może być przetwarzany przez aplikację WoodCutter, aby ponownie połączyć wszystkie pliki. W przypadku, gdy odbiorca podzielonych plików nie ma zainstalowanego programu WoodCutter, można również uzyskać oryginalny plik, ponieważ program WoodCutter tworzy również plik wsadowy i plik skryptu powłoki, aby scalić pliki z powrotem. Plik wsadowy będzie używany na platformie Windows, a skrypt Shell będzie używany na platformach Linux.

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


2
Licencja jest „bezpłatna”. Myślę, że narzędzie Wolnego Oprogramowania znajdujące się w repozytoriach jest lepszym rozwiązaniem.
Broam

0

split --number

Jest to dobra opcja do generowania N plików o tym samym rozmiarze, z wyjątkiem ostatniego, który może być większy ze względu na niepodzielność. Na przykład:

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

daje:

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

i:

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

daje:

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

W porównaniu z -b+ jawnym obliczeniem rozmiaru, o którym wspomniano na stronie : https://askubuntu.com/a/54584/52975 , ostatni plik może być prawie dwukrotnie większy niż poprzednie, co jest czasem wadą tej opcji. Jest to jednak wygodniejsze wiele razy, ponieważ nie musisz samodzielnie obliczać rozmiaru.

Poproszono o taką samą liczbę linii na stronie : https://stackoverflow.com/questions/2016894/how-to-split-a-large-text-file-into-smaller-files-with-equal-number-of-lines

Testowane w wersji split2.28, Ubuntu 18.04.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.