Splitting files in linux

How to split larger files into smaller parts?

I have a large file (8GB for Example). How can I split it into multiple parts, let’s say 3 equal parts, and after that how do I integrate them later?

Are you sure «This seems to be»?. Heck, it is the same exact thing. Except here is now with a bonus of «More examples and alternatives.»

It might help if you say more about why you want to split it, and whether you want it split just into byte substrings or whether you’re open to having them wrapped up in any kind of error checking or labelling. If this is to put it on smaller media or for network transfers I’d look at something like par2.

7 Answers 7

There are several ways to accomplish this. Let’s start with the basic ones.

Using the split and cat commands:

Lets says I have an image and its too big (10MB). All I do is:

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

and then to put it together I use cat:

cat prefixFiles* > newimage.jpg 

Assuming am inside the folder where the image is:

split --bytes=1M myimage.jpg new 

if the image is inside a directory called images you can also do this:

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

If the image is inside the directory /home/cyrex/images you can do this:

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

(In all the cases above it will split myimage.jpg in 1MB pieces and prefix the name of the pieces with the word new. So they would look like newaa , newab , newac , newad . )

If you are splitting a Text file and want to split it by lines you can do this:

Which will split the text file in output files of 1000 lines each. This is another way to split a file and is mostly used for text files like logs, sql dumps, csv files, etc..

This is one way. You can even change the size of the splitted pieces. Just change the part that says —bytes=1M to —bytes=1K for 1 kilobyte or 1G for giga, or another number like —bytes=4K for 4KB pieces.

Using Nautilus

Another way is the compress option in the gui of Nautilus. It gives you an option to split the file or files you want to compress into smaller megabyte sizes. Its simple and easy.

Yet another way is using 7z

Assuming you have an ISO image called ubuntu.iso you could do this:

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

This will create 5MB size files from the ubuntu.iso . The -v5m is the volume size so you can change it to 10, 12, 1, 3 and also the m can be changed to k for kilobytes, etc; the -mx0 switch tells 7-Zip to use no compression, that is, just to split data into parts.

Читайте также:  Awk command for linux

this way you extract the first file and 7z starts extracting from the following files in order. You can also do

which has the same effect here.

Did not include rar since is not open source yet (As far as I know) and did not add Tar since I was looking for easy ways of doing the split.

For what i know, Gzip (like tar) do not have an easy option to split the compressed file. In all cases i have seen them using the split command to «split» the compress file. So it would not be a command but a group of commands to achieve a single purpose which can be done with a single one like split or 7z. For the installation of 7Zip (which is the p7zip of p7zip-full package) it has never asked me for iirc ;).

Added splitting of text files. Forgot about that and today it just so happened I needed to split a couple of CSV files. This is for those dumps that you need to be of a specific amount of lines.

Using split -b with the appropriate number, you can get three pieces.

Manual pages will help fill the details.

You can also use split —number to let split calculate the number of files for you: askubuntu.com/questions/54579/…

GNOME Split is a tool that allows you to split files and merge them back. It is written in Java and uses a GTK+ user interface (thanks to the java-gnome project). The goal is to offer a native implementation of similar projects which can handle multiple file formats (e.g. Xtremsplit).

enter image description here

OZ is what you would call a ‘file splitter’. Its file format is the same as the one used by the ‘Hacha’ software, a well known splitter in Spain and Latinamerica. HOZ is an open-source and portable C implementation of an ‘Hacha’ compatible splitter.

HOZ is smaller and faster than ‘Hacha’.

btw, I used a ‘Z’ isntead of a ‘S’ in ‘Zource’ because ‘hoz’ is ‘sickle’ in spanish, and since ‘hacha’ is the spanish word for ‘axe’.

After installing, you can use the Hoz GUI by dropping ghoz in a terminal. The operation is so simple that needs no explanation but further information can be reached in the developer’s site.

A free file split and merge utility developed in Java. It is a small size application that allows a user to split any type of file in smaller sizes in KB, MB or GB.

It is available for Linux as well as Windows.

WoodCutter offers 3 ways of merging back the original files. WoodCutter creates a merge file which can be processed by the WoodCutter application to join all the files back. In case the receiver of split files does not have WoodCutter installed, then also the original file can be obtained as WoodCutter also creates a batch file and a Shell script file to merge the files back. The batch file will be used in Windows platform and Shell script will be used in Linux platforms.

Читайте также:  Linux double commander install

Источник

Как разбить файл на части Linux

В некоторых случаях один файл нужно разбить на несколько частей, например, для более удобного хранения или для загрузки в случае слишком большого размера. Проще всего это сделать с помощью утилиты split в терминале Linux.

В данной статье мы расскажем о том, как работает команда split Linux. А затем разберемся с конкретными сценариями использования, например, как разбить файл на части Linux по определенным критериям. А затем рассмотрим как объединить обратно получившиеся части.

Синтаксис и опции split

Данная команда разбивает один большой файл на несколько маленьких. У неё достаточно понятный синтаксис. Для запуска следует указать опции, путь к большому файлу и путь создания новых файлов с общим префиксом имени:

$ split опции /местоположение/исходного/файла /путь/к/конечной/папке/префикс_имени

  • -a, —suffix-length – задать длину суффикса (количество символов) в имени части файла. По умолчанию это 2 символа.
  • —additional-suffix – указать дополнительный суффикс.
  • -b, —bytes – разбить файл на части равного указанного размера. Единица измерения – 1 байт, 1000 байт записывается как KB, 1024 как K. По аналогии есть MB (M), GB (G) и так далее.
  • -C, —line-bytes – разбить файл на части не более указанного размера, не разделяя строки/записи внутри него.
  • -d – использовать числовой суффикс в имени конечного файла вместо алфавитного. Отсчет начинается с нуля.
  • —numeric-suffixes – то же самое, что и -d, но еще задаётся начальное число для отсчета.
  • -x – использовать hex-префикс вместо алфавитного. Начальное значение – 0.
  • —hex-suffixes – то же самое, что и -x, но начальное значение задаётся вручную.
  • -e, —elide-empty-files – не создавать пустые файлы при выполнении опции -n.
  • -l, —lines – установить максимальное количество строк/записей итогового файла. По умолчанию команда split разбивает файл на 1000 строк.
  • -n, —number – разбить файл на чанки (указанное количество частей).
  • -t, —separator – установить свой разделительный символ вместо новой строки.
  • —verbose – выводить информацию о новых файлах перед их созданием.
  • —version – посмотреть версию утилиты.

В список включены не все опции. Чтобы посмотреть полную информацию, выполните в терминале команду:

Как разбить файл на части Linux

Теперь перейдем к практической части статьи и на конкретных примерах посмотрим, как используется команда split Linux для разбивания файлов по размеру, по количеству строк и на заданное количество частей. Заодно мы упомянем нюансы выбора имени для частей файла.

1. Разбить по размеру

В данном случае поможет опция -b, определяющая максимальный размер конечного файла. За основу возьмем архив в 5.3 Мб, который находится по пути ~/Archives/archive.tar.gz. Его нужно разбить на несколько файлов по 1 Мб, например, чтобы потом переслать по почте. Для удобства зададим ему префикс имени split-archive.part_, а после нижнего подчеркивания будет идти суффикс, обозначающий номер конечного файла. Команда выглядит следующим образом:

Читайте также:  Linux copy file remote host

split -b 10M ~/Archives/archive.tar.gz ~/Archives/split-archive.part_

JBN7AAAAAElFTkSuQmCC

Вот как будет выглядеть конечная папка:

A67xrZIC8ptGAAAAAElFTkSuQmCC

Помимо самого архива, в ней есть еще 6 файлов. Вы можете пропустить ввод конечного местоположения и префикса. Тогда файлы автоматически создадутся в текущей папке.

2. Разбить по количеству строк

Иногда нужно разбить один текстовый документ на несколько, например, с количеством строк не больше установленного числа. В этом вопросе полезной окажется опция -l. Команда для разбития будет выглядеть следующим образом:

split -l 1000 ~/Logs/log ~/Logs/Split/divided-log_

Возьмем большой log-файл с данными на 219 тысяч строк. Для более удобной работы его нужно разбить на документы по 10 тысяч строк в каждом и поместить во вложенный каталог.

Еще одна достаточно интересная задача, в решении которой поможет опция -n. Достаточно прописать для неё итоговое количество файлов и запустить команду:

split -n 3 ~/Archives/archive.tar.gz ~/Archives/archive/split-archive.part_

Вот как это выглядит для рассмотренного ранее архива:

HQAAAABJRU5ErkJggg==

Если вы хотите разбить файл на несколько частей, не разделяя строки/записи внутри него, то понадобится модификатор l. Например, для того чтобы разбить файл на три части выполните такую команду:

split -n l/3 ~/Logs/Log ~/Logs/Split/divided-log_

O4E6q9AzDCL3PpT52x6cdmTuq2jUnwFDI7fCr7b9fr26Fyre8Hzi5BcybA83Zd4+2Hn1r+CzDa9tJHZI6vAAAAAElFTkSuQmCC

4. Настройка имени частей файла

Как мы уже писали ранее, для команды split префикс определяет название части файла. А после него по умолчанию идет суффикс из двух латинских букв. С помощью дополнительных опций можно изменить его длину (опция -a), переключиться на числа (опция -d) или hex-символы (опция -x). В последних двух сценариях получится выбрать начальную точку отчета (опция —numeric-suffixes для чисел и —hex-suffixes для hex-символов).

Возьмем такую задачу – разделить текстовый документ на 3 файла равного размера, чтобы каждый из них имел префикс split-text.part_ и числовой суффикс из одного символа, начиная с единицы:

split -a 1 —numeric-suffixes=1 -n 3 ~/Docs/text ~/Docs/Split/split-text.part_

wME0Yt4zcpd1QAAAABJRU5ErkJggg==

Как объединить части файла

Теперь вы знаете как разбить файл на части в Linux с помощью команды split. Следующий шаг – объединение нескольких частей в единый файл. Для этих целей отлично подойдет утилита cat. Сначала нужно задать имена самых частей, а потом итоговый файл:

$ cat /путь/к/1/части /путь/ко/2/части … > /местоположение/объединенного/файла

Поскольку все части имеют схожее имя, и различается только суффикс, можно упростить команду до такого вида:

cat ~/Archive/split-archive.part_* > ~/Archives/cat-archive.tar.gz

Рассмотрим объединение ранее разбитого на части архива.

i0XekR0vyxgAAAABJRU5ErkJggg==

Выводы

Утилита split в некоторых ситуациях окажется очень полезной. Она позволяет разбить один большой файл на несколько маленьких, указав при этом определенные критерии разделения. Мы рассмотрели несколько популярных сценариев для её использования. Но на деле их гораздо больше. Разбитый файл можно объединить, например, с помощью утилиты cat. Мы упомянули ее ближе к концу статьи.

Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.

Источник

Оцените статью
Adblock
detector