Разделяй и властвуй: Как легко разбить огромный файл в Linux

Разделяй и властвуй: Как легко разбить огромный файл в Linux

Представьте: у вас есть гигантский архив или лог-файл, который не помещается на флешку или его отказывается принимать почтовый сервер. Знакомая ситуация? Не нужно искать сложные программы или паниковать!

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

Она позволяет одним действием разделить файл любого размера на аккуратные, удобные части. Вы сами задаете правила: разбить по размеру, например, на куски по 100 МБ, чтобы переслать по почте. Или разделить лог-файл по 10 000 строк для удобства анализа.

Можно даже указать точное количество частей, на которые нужно разбить исходный файл. А гибкие настройки именования не позволят вам запутаться в получившихся фрагментах.

В этой статье мы на живых примерах разберем, как заставить `split` работать на вас. Вы узнаете все ключевые опции команды и типичные сценарии ее использования.

Но что делать, когда части нужно снова собрать воедино? Мы тоже об этом позаботились и покажем простейшую команду, которая мгновенно склеит все обратно.

Готовьте свой терминал! Сейчас вы научитесь легко управлять даже самыми неподъемными файлами.


В некоторых случаях один файл нужно разбить на несколько частей, например, для более удобного хранения или для загрузки в случае слишком большого размера. Проще всего это сделать с помощью утилиты 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 – посмотреть версию утилиты.

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

man split

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

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

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

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

split -b 10M ~/Archives/archive.tar.gz ~/Archives/split-archive.part_
Разделяй и властвуй: Как легко разбить огромный файл в Linux

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

Разделяй и властвуй: Как легко разбить огромный файл в Linux

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

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

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

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

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

Разделяй и властвуй: Как легко разбить огромный файл в Linux

Результат выглядит так:

Разделяй и властвуй: Как легко разбить огромный файл в Linux

3. Разбить на определённое количество файлов

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

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

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

Разделяй и властвуй: Как легко разбить огромный файл в Linux

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

split -n l/3 ~/Logs/Log ~/Logs/Split/divided-log_
Разделяй и властвуй: Как легко разбить огромный файл в Linux

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_
Разделяй и властвуй: Как легко разбить огромный файл в Linux

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

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

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

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

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

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

Разделяй и властвуй: Как легко разбить огромный файл в Linux

Выводы

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

Оставить комментарий


Кликните на изображение чтобы обновить код, если он неразборчив