Использование команды split в Linux

Опубликовано admin - чт, 05/26/2022 - 17:57

Команда Split применяется в Linux для разделения больших файлов на файлы меньшего размера. По умолчанию  файлы разбиваются на 1000 строк в каждом.

Использование команды split Linux

Пользователь может изменять количество строк в соответствии с требованиями. Имена файлов: PREFIXaa, PREFIXab, PREFIXac и т. д.

Содержание

Синтаксис

$ split [options] filename [prefix]

Выводит части ФАЙЛА фиксированного размера в файлы ПРЕФИКСaa, ПРЕФИКСab, …; по умолчанию размер части равен 1000 строк, а ПРЕФИКС — x.

Основные опции

-b, --bytes=ЧИСЛО
Записывать в выходной файл заданное ЧИСЛО байт
-d
Использовать числовые (начинающиеся с 0), а не буквенные суффиксы
-l, --lines=ЧИСЛО
Записывать в каждый выходной файл заданное ЧИСЛО строк
-n, --number=ПОРЦИИ
Генерировать выходные файлы по ПОРЦИЯМ (задать количество выводимых файлов)
    --verbose
Печатать диагностику перед открытием очередного выходного файла

РАЗМЕР задаётся целым числом и необязательной единицей измерения (пример: 10K это 10*1024). Единицы измерения: K, M, G, T, P, E, Z, Y (степень 1024) или KB, MB, … (степень 1000). Также можно использовать двоичные префиксы: KiB=K, MiB=M и так далее.

ПОРЦИИ могут задаваться в следующем виде:

N
Разделить на N файлов, основываясь на размере входных данных
K/N
Вывести K-ую порцию из N на стандартный вывод
l/N
Разделить на N файлов без разделения строк/записей
l/K/N
Вывести K-ую порцию из N на стандартный вывод без разделения строк/записей
r/N
Как l, но использовать циклический перебор
r/K/N
Аналогично, но вывести только K-ую порцию из N на стандартный вывод

Установка

В базовую поставку известных мне дистрибутивов Linux split включён и в установке не нуждается.

Примеры использования

Разделение исходного файла

Разделить файл на короткие файлы. Предположим, имя файла с именем puppy431_RU-m4.iso. Используйте приведенную ниже команду разделения, чтобы разбить его на части.

oleg@mobile:~/store/distros/puppy:$ split puppy431_RU-m4.iso 

Смотрим список файлов:

oleg@mobile:~/store/distros/puppy:$ ls -l
итого 507984
-rw-r--r-- 1 oleg users 259162112 апр 12  2013 puppy431_RU-m4.iso
-rw-r--r-- 1 oleg users    309754 мая 26 16:40 xaa
-rw-r--r-- 1 oleg users    240393 мая 26 16:40 xab
-rw-r--r-- 1 oleg users    266687 мая 26 16:40 xac
...
-rw-r--r-- 1 oleg users    262423 мая 26 16:41 xzakr
-rw-r--r-- 1 oleg users    275433 мая 26 16:41 xzaks
-rw-r--r-- 1 oleg users    278122 мая 26 16:41 xzakt
-rw-r--r-- 1 oleg users    261773 мая 26 16:41 xzaku


Файл  разделен на части с именами от xaa до xzaku. По умолчанию в каждом файле будет 1000 строк. Полученные файлы называются так потому, что мы не установили никакого значения префикса.

Разделить файл по количеству строк.

oleg@mobile:~/store/distros/puppy:$ split -l 100000 puppy431_RU-m4.iso

Файл puppy431_RU-m4.iso разбит на фрагменты по 100000 строк. Использована опция -l

Разделить файл с подробным выводом. Мы будем использовать ту же опцию -l 100000 и получать сообщение при создании нового файла.

oleg@mobile:~/store/distros/puppy:$ split -l 100000 puppy431_RU-m4.iso --verbose
создаётся файл 'xaa'
создаётся файл 'xab'
создаётся файл 'xac'
создаётся файл 'xad'
создаётся файл 'xae'
создаётся файл 'xaf'
создаётся файл 'xag'
создаётся файл 'xah'
создаётся файл 'xai'
создаётся файл 'xaj'

Разделить файлы, созданные с числовым суффиксом. Как правило, выходные данные имеют формат x**, где ** — буквы алфавита. Мы можем изменить суффикс файлов на числовой, используя опцию -d.

oleg@mobile:~/store/distros/puppy:$ split -l 100000 -d puppy431_RU-m4.iso

Смотрим список файлов:

oleg@mobile:~/store/distros/puppy:$ ls -l
итого 506196
-rw-r--r-- 1 oleg users 259162112 апр 12  2013 puppy431_RU-m4.iso
-rw-r--r-- 1 oleg users  27622457 мая 26 17:16 x00
-rw-r--r-- 1 oleg users  28058980 мая 26 17:16 x01
-rw-r--r-- 1 oleg users  27437930 мая 26 17:16 x02
-rw-r--r-- 1 oleg users  28756373 мая 26 17:16 x03
-rw-r--r-- 1 oleg users  27046983 мая 26 17:16 x04
-rw-r--r-- 1 oleg users  28558155 мая 26 17:16 x05
-rw-r--r-- 1 oleg users  28045790 мая 26 17:16 x06
-rw-r--r-- 1 oleg users  27999732 мая 26 17:16 x07
-rw-r--r-- 1 oleg users  27317413 мая 26 17:16 x08
-rw-r--r-- 1 oleg users   8318299 мая 26 17:16 x09

Создание n фрагментов выходных файлов. Если мы хотим разделить файл на три выходных файла фрагмента, то следует использовать параметр -n, ограничивающий количество выходных файлов.

oleg@mobile:~/store/distros/puppy:$ split -n 3 puppy431_RU-m4.iso

Смотрим список файлов:

oleg@mobile:~/store/distros/puppy:$ ls -l
итого 506180
-rw-r--r-- 1 oleg users 259162112 апр 12  2013 puppy431_RU-m4.iso
-rw-r--r-- 1 oleg users  86387370 мая 26 17:20 xaa
-rw-r--r-- 1 oleg users  86387370 мая 26 17:20 xab
-rw-r--r-- 1 oleg users  86387372 мая 26 17:20 xac

Были созданы три фрагмента. 

Следует избегать создания фрагментов нулевого размера, которые могут возникнуть при разбиении небольшого файла на большое количество фрагментов. Для того чтобы избежать этого, используется опция -e.

$ split -e file.txt

Восстановление исходного файла

Для восстановления будем использовать команду cat — сокращение от конкатенации, то есть объединения элементов вместе. Так как все файлы начинаются с буквы х, то звездочка * будет применять команду ко всем файлам, названия которых начинаются с этой буквы.

oleg@mobile:~/store/distros/puppy:$ ls -l
итого 506180
-rw-r--r-- 1 oleg users 259162112 апр 12  2013 puppy431_RU-m4.iso
-rw-r--r-- 1 oleg users  86387370 мая 26 17:20 xaa
-rw-r--r-- 1 oleg users  86387370 мая 26 17:20 xab
-rw-r--r-- 1 oleg users  86387372 мая 26 17:20 xac
oleg@mobile:~/store/distros/puppy:$ cat x* > recoveredpuppy431_RU-m4.iso

Смотрим список файлов:

oleg@mobile:~/store/distros/puppy:$ ls -l
итого 759268
-rw-r--r-- 1 oleg users 259162112 апр 12  2013 puppy431_RU-m4.iso
-rw-r--r-- 1 oleg users 259162112 мая 26 17:28 recoveredpuppy431_RU-m4.iso
-rw-r--r-- 1 oleg users  86387370 мая 26 17:20 xaa
-rw-r--r-- 1 oleg users  86387370 мая 26 17:20 xab
-rw-r--r-- 1 oleg users  86387372 мая 26 17:20 xac

Изначальный файл и восстановленный файл абсолютно идентичны.

Заключение

В статье были показаны основные примеры работы с командой split в Linux. Начинающим пользователям Linux знание её и умение ей пользоваться будут очень полезны.

Поделиться с друзьями