Як розділити більші файли на менші частини?


189

У мене великий файл (8 Гб для прикладу). Як я можу розділити його на кілька частин, скажімо, 3 рівних частини, а після цього як їх об'єднати пізніше?


Здається, це дублікат askubuntu.com/questions/12172/…
Jo-Erlend Schinstad

Ви впевнені, що "Здається, це" ?. Чорт, це та сама точна річ. За винятком ось тепер, з бонусом "Більше прикладів та альтернатив".
Луїс Альварадо

Це може допомогти, якщо ви скажете більше про те, чому ви хочете розділити його, і чи ви хочете, щоб він розділився лише на байтові підрядки чи ви можете відкрити їх до будь-якого виду перевірки помилок чи маркування. Якщо це потрібно розмістити на менших носіях або для мережевих передач, я подивився б щось на зразок par2 .
poolie


один вкладиш для однаково розбитого на N: (1.) розділений на лінії розділення --lines $ (($ (wc-l <$ {your_filename}) / $ {N})) $ {your_filename} (2.) розділити на байт розділити --байтів $ (($ (wc -c <$ {your_filename}) / $ {N})) $ {your_filename}
Тревор Бойд Сміт

Відповіді:


272

Існує кілька способів досягти цього. Почнемо з основних.

Використання команд розділення та кота :

Скажемо, у мене є зображення і його занадто великий (10 Мб). Все, що я роблю, це:

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

а потім, щоб скласти це, я використовую кішку:

cat prefixFiles* > newimage.jpg

Наприклад:

Припустимо, що я всередині папки, де знаходиться зображення:

split --bytes=1M myimage.jpg new

якщо зображення знаходиться всередині каталогу, який називається images, ви також можете зробити це:

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

Якщо зображення знаходиться всередині каталогу / home / cyrex / images, ви можете зробити це:

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

(У всіх випадках вище він буде розділений myimage.jpgна 1 МБ шматків і префікс імені частин зі словом новим. Так вони будуть виглядати newaa, newab, newac, newad...)

Якщо ви розділяєте текстовий файл і хочете розділити його на рядки, ви можете зробити це:

split -l 1000 book.txt new

Який розділить текстовий файл на вихідні файли по 1000 рядків кожен. Це ще один спосіб розділити файл і в основному використовується для текстових файлів, таких як журнали, sql звалища, CSV файли тощо.

Потім я їх зливаю

cat new* > newimage.jpg

Це один спосіб. Можна навіть змінити розмір розрізаних шматків. Просто змініть частину, яка говорить --bytes=1Mна --bytes=1K1 кілобайт або 1G для гіга, або іншу цифру, наприклад, --bytes=4Kна 4 КБ.

Використання Наутілуса

Ще один спосіб - це варіант стиснення в гуї Наутілуса. Це дає можливість розділити файл або файли, які ви хочете стиснути, на менший розмір мегабайт. Його просто і легко.

Ще один спосіб - використання 7z

Якщо припустити, що у вас є ISO-зображення, ubuntu.isoви можете це зробити:

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

Це створить файли розміром 5 Мб з ubuntu.iso. -v5mЄ розмір тому , так що ви можете змінити його на 10, 12, 1, 3 , а також м можуть бути змінені на K для кілобайт, і т.д .; -mx0перемикач каже 7-Zip не використовувати без стиснення, тобто, просто розділити дані на частини.

Добувати просто робити

7z x ubuntu.7z.001

таким чином ви витягаєте перший файл і 7z починає витягувати з наступних файлів по порядку. Ви також можете зробити

7z e ubuntu.7z.001

що має ту саму дію.


2
Не включав rar, оскільки ще не є відкритим кодом (наскільки я знаю) і не додав Tar, оскільки шукав прості способи зробити спліт.
Луїс Альварадо

Додайте також gzip - 7zip вимагає встановлення пакета
iirc

Як я знаю, у Gzip (як тар) немає простого варіанту розділення стисненого файлу. У всіх випадках я бачив їх, використовуючи команду split, щоб "розділити" файл стиснення. Таким чином, це була б не команда, а група команд для досягнення єдиної мети, яку можна виконати з єдиною, як розділення або 7z. Для встановлення 7Zip (що є p7zip пакету p7zip-full) він ніколи не просив мене про iirc;).
Луїс Альварадо

Додано розділення текстових файлів. Забув про це, і сьогодні це просто так сталося, що мені потрібно було розділити пару файлів CSV. Це для тих сміттєзвалищ, які потрібно мати певну кількість ліній.
Луїс Альварадо

10

Використовуючи split -bвідповідну кількість, ви можете отримати три штуки.

Кількість може бути:

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

Щоб зібрати, використовуйте кіт

cat "file name"* > "file name"

Сторінки вручну допоможуть заповнити деталі.


1
Ви також split --numberможете дозволити splitобчислити кількість файлів для вас: askubuntu.com/questions/54579/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

4

HJSplit

Це популярна безкоштовна програма для розділення та рекомбінації файлів. Програма доступна на Windows, Linux та багатьох інших платформах.

HJSplit для Linux - це безкоштовний роздільник файлів для Linux з повним графічним інтерфейсом користувача. HJSplit підтримує розміри файлів понад 100 гігабайт, розділити, приєднатись / відновити, контрольні суми MD5, порівняти файли, "запустити без встановлення" і програма повністю портативна.

HJSplit для Linux не потрібно встановлювати, і це не залежить від будь-яких спеціальних бібліотек. Просто витягніть архів hjsplitlx.tar.gz у вибраний каталог та запустіть програму з файлового менеджера Linux або вікна терміналу. Можливо, вам доведеться відрегулювати дозволи файлу програми на "виконуваний файл".

введіть тут опис зображення


1
Потрібно сказати, що файл Windows працює і на Linux.
Uri Herrera

2
Існує кілька способів розділення / приєднання до файлу, перш ніж перейти до такої програми. Я скоріше використовую потужні параметри, які пропонує Linux, і для розбиття / об'єднання файлів у нього є досить швидкі, безпечні способи зробити це.
Луїс Альварадо

3
Це безпечно, швидко, І це кросплатформна платформа, яка включає LINUX, це не додаток, призначений лише для WINDOWS, який просто так запускається і в Linux ...
Uri Herrera

2
Я використовую HJSplit, це чудово і просто. Не потрібно вводити команди та назви параметрів, коли ви можете просто заповнити значення параметрів у текстові поля.
Матвій

2
А те, що безкоштовно скачати, робить це гірше, тому що? і я повинен сказати, що НІКОЛИ В ОП НЕ ПРОБЛЕМАЄ БЕЗКОШТОВНЕ ПРОГРАМНЕ ЗАБЕЗПЕЧЕННЯ (що це таке, це безкоштовно), а те, що ви маєте на увазі, називається ВІДКРИТИм, є різниця, яку ви знаєте ?.
Uri Herrera

4

Гном розколовся? http://gnome-split.org/

GNOME Split - це інструмент, який дозволяє розділяти файли та об'єднувати їх назад. Він написаний на Java та використовує інтерфейс користувача GTK + (завдяки проекту java-gnome). Мета полягає в тому, щоб запропонувати власну реалізацію подібних проектів, які можуть обробляти різні формати файлів (наприклад, Xtremsplit).

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


3

ХОЗ - Hacha Open Zource v1.65 - http://hoz.sourceforge.net/

введіть тут опис зображення

Від розробника:

OZ - це те, що ви б назвали "роздільником файлів". Формат файлу такий самий, як у форматі "Hacha", відомому спліттері в Іспанії та Latinamerica. HOZ - це відкритий та портативний C-реалізація сумісного розгалужувача "Hacha".

HOZ менший і швидший, ніж "Hacha".

btw, я використав "Z" isntead з "S" в "Zource", оскільки "hoz" - "серп" іспанською мовою, а оскільки "hacha" - іспанське слово для "ax" ...

Після встановлення ви можете використовувати GUI Hoz, ввівши ghozтермінал. Операція настільки проста, що не потребує пояснень, однак додаткову інформацію можна отримати на сайті розробника.

Удачі!


0

WoodCutter

На Java розроблена безкоштовна утиліта для розділення та злиття файлів. Це додаток невеликого розміру, який дозволяє користувачеві розділяти будь-який тип файлів менших розмірів у КБ, МБ або ГБ.

Він доступний для Linux, а також для Windows.

WoodCutter пропонує 3 способи об’єднання назад оригінальних файлів. WoodCutter створює файл злиття, який може бути оброблений програмою WoodCutter, щоб приєднати всі файли назад. Якщо в приймачі розділених файлів не встановлено WoodCutter, тоді також можна отримати оригінальний файл, оскільки WoodCutter також створює пакетний файл та файл сценарію Shell для об'єднання файлів назад. Пакетний файл буде використовуватися на платформі Windows, а сценарій Shell - у платформах Linux.

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


2
Ліцензія "безкоштовна". Я думаю, що інструмент вільного програмного забезпечення, який знаходиться в репості, є кращим рішенням.
Брам

0

split --number

Це хороший варіант для створення N файлів однакового розміру, за винятком останнього, який може бути більшим через неподільність. Наприклад:

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

дає:

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

і:

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

дає:

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

Порівняно з -b+ явним розрахунком розміру, про який згадувалося на веб- сайті: https://askubuntu.com/a/54584/52975 , останній файл може бути майже в 2 рази більший, ніж попередній, що іноді є недоліком цієї опції. Однак це зручніше багато разів, оскільки вам не доведеться робити розрахунок розміру самостійно.

Про рівну кількість рядків задали: 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.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.