Поиск по сайту:
Сила духа не может заменить чуткости пальцев (А. Эйнштейн).

9 полезных примеров команды Split в Linux

31.07.2019
9 полезных примеров команды Split в Linux

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

Обратите внимание, что мы не будем отображать вывод напрямую в этих примерах из-за больших размеров файлов. Мы будем использовать команды ll и wc для выделения изменений файла.

Мы советуем вам быстро взглянуть на команду wc, чтобы понять вывод примеров команды split.

 

Примеры команды Split в Linux

Синтаксис команды Split:

split [options] filename [prefix]

 

Давайте посмотрим, как использовать его для разделения файлов в Linux.

 

1. Разделите файлы на несколько файлов

По умолчанию команда split создает новые файлы для каждых 1000 строк. Если префикс не указан, он будет использовать ‘x’. Следующие буквы перечисляют файлы, поэтому сначала идет xaa, затем xab и так далее.

Давайте разделим пример файла журнала:

split AndreyExLogFile.log

 

Если вы используете команду ls, вы можете увидеть несколько новых файлов в вашем каталоге.

andreyex@destroyer:~/Documents$ ls
AndreyExLogFile.log  xab  xad  xaf  xah  xaj  xal  xan  xap  xar
xaa              xac  xae  xag  xai  xak  xam  xao  xaq

 

Вы можете использовать wc для быстрой проверки количества строк после разделения.

andreyex@destroyer:~/Documents$ wc -l xaa xaq xar
1000 xaa
1000 xaq
170 xar

 

Помните, что ранее мы видели, что наш исходный файл содержал 17 170 строк. Таким образом, мы можем видеть, что наша программа создала как и ожидалось, 18 новых файлов. 17 из них заполнены 1000 строками в каждой, а последняя имеет оставшиеся 170 строк.

Другой способ продемонстрировать, что происходит, – запустить команду с параметром verbose. Если вы не знакомы с verbose, вы пропускаете! Он предоставляет более подробные отзывы о том, что делает ваша система, и он доступен для использования со многими командами.

split AndreyExLogFile.log --verbose

 

Вы можете увидеть, что происходит с вашей командой на дисплее:

creating file 'xaa'
creating file 'xab'
creating file 'xac'
creating file 'xad'
creating file 'xae'
creating file 'xaf'
creating file 'xag'
creating file 'xah'
creating file 'xai'
creating file 'xaj'
creating file 'xak'
creating file 'xal'
creating file 'xam'
creating file 'xan'
creating file 'xao'
creating file 'xap'
creating file 'xaq'
creating file 'xar'

 

2. Разделите файлы на несколько файлов с определенными номерами строк

Мы понимаем, что вам может не понравиться, что файлы разбиты на файлы по 1000 строк. Вы можете изменить это поведение с помощью опции -l.

Читать  Как удалить пользователя из группы в Linux [Быстрый совет]

Теперь вы можете указать, сколько строк вы хотите в каждом из новых файлов.

split AndreyExLogFile.log -l 500

 

Как вы можете догадаться, теперь разделенные файлы имеют по 500 строк каждая, кроме последней.

andreyex@destroyer:~/Documents$ wc -l xbh xbi
500 xbh
170 xbi

 

Теперь у вас есть намного больше файлов, но с половиной строк в каждом.

 

3. Разделение файлов на n файлов

Опция -n делает разделение на указанное число частей или кусков. Вы можете назначить, сколько файлов вы хотите, добавив целочисленное значение после -n.

split AndreyExLogFile.log -n 15

 

Теперь вы можете видеть, что есть 15 новых файлов.

andreyex@destroyer:~/Documents$ ls
AndreyExLogFile.log  xaa  xab  xac  xad  xae  xaf  xag  xah  xai  xaj  xak  xal  xam  xan  xao

 

4. Разделение файлов с пользовательским префиксом имени

Что делать, если вы хотите использовать split, но оставить оригинальное имя моего файла или вообще создать новое имя вместо ‘x’?

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

split AndreyExLogFile.log AndreyExSeparatedLogFiles.log_

 

Вот разделенные файлы с именами, начинающимися с данного префикса.

andreyex@destroyer:~/Documents$ ls
AndreyExLogFile.log               AndreyExSeparatedLogFiles.log_aj
AndreyExSeparatedLogFiles.log_aa  AndreyExSeparatedLogFiles.log_ak
AndreyExSeparatedLogFiles.log_ab  AndreyExSeparatedLogFiles.log_al
AndreyExSeparatedLogFiles.log_ac  AndreyExSeparatedLogFiles.log_am
AndreyExSeparatedLogFiles.log_ad  AndreyExSeparatedLogFiles.log_an
AndreyExSeparatedLogFiles.log_ae  AndreyExSeparatedLogFiles.log_ao
AndreyExSeparatedLogFiles.log_af  AndreyExSeparatedLogFiles.log_ap
AndreyExSeparatedLogFiles.log_ag  AndreyExSeparatedLogFiles.log_aq
AndreyExSeparatedLogFiles.log_ah  AndreyExSeparatedLogFiles.log_ar
AndreyExSeparatedLogFiles.log_ai

 

5. Разделите и укажите длину суффикса

Разделение имеет длину суффикса по умолчанию 2 [aa, ab и т. д.]. Это изменится автоматически при увеличении количества файлов, но если вы хотите изменить его вручную, это тоже возможно. Допустим, вы хотите, чтобы наши файлы были названы как-то вроде AndreyExSeparatedLogFiles.log_aaaab.

Как ты можешь это сделать? Опция -a позволяет нам указать длину суффикса.

split AndreyExLogFile.log AndreyExSeparatedLogFiles.log_ -a 5

 

И вот разделенные файлы:

andreyex@destroyer:~/Documents$ ls
AndreyExLogFile.log                  AndreyExSeparatedLogFiles.log_aaaae  AndreyExSeparatedLogFiles.log_aaaaj  AndreyExSeparatedLogFiles.log_aaaao
AndreyExSeparatedLogFiles.log_aaaaa  AndreyExSeparatedLogFiles.log_aaaaf  AndreyExSeparatedLogFiles.log_aaaak  AndreyExSeparatedLogFiles.log_aaaap
AndreyExSeparatedLogFiles.log_aaaab  AndreyExSeparatedLogFiles.log_aaaag  AndreyExSeparatedLogFiles.log_aaaal  AndreyExSeparatedLogFiles.log_aaaaq
AndreyExSeparatedLogFiles.log_aaaac  AndreyExSeparatedLogFiles.log_aaaah  AndreyExSeparatedLogFiles.log_aaaam  AndreyExSeparatedLogFiles.log_aaaar
AndreyExSeparatedLogFiles.log_aaaad  AndreyExSeparatedLogFiles.log_aaaai  AndreyExSeparatedLogFiles.log_aaaan

 

6. Разделить с помощью числового суффикса заказа

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

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

split AndreyExLogFile.log AndreyExSeparatedLogFiles.log_ -a 5 -d

 

Читать  Обновление Fedora Linux 33 до Fedora Linux 34

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

andreyex@destroyer:~/Documents$ ls
AndreyExLogFile.log                  AndreyExSeparatedLogFiles.log_00004  AndreyExSeparatedLogFiles.log_00009  AndreyExSeparatedLogFiles.log_00014
AndreyExSeparatedLogFiles.log_00000  AndreyExSeparatedLogFiles.log_00005  AndreyExSeparatedLogFiles.log_00010  AndreyExSeparatedLogFiles.log_00015
AndreyExSeparatedLogFiles.log_00001  AndreyExSeparatedLogFiles.log_00006  AndreyExSeparatedLogFiles.log_00011  AndreyExSeparatedLogFiles.log_00016
AndreyExSeparatedLogFiles.log_00002  AndreyExSeparatedLogFiles.log_00007  AndreyExSeparatedLogFiles.log_00012  AndreyExSeparatedLogFiles.log_00017
AndreyExSeparatedLogFiles.log_00003  AndreyExSeparatedLogFiles.log_00008  AndreyExSeparatedLogFiles.log_00013

 

7. Добавьте шестнадцатеричные суффиксы для разделения файлов

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

В этом примере мы объединяем несколько вещей, которые мы вам уже показали. Мы разделим файл, используя свой собственный префикс и выбрали подчеркивание для удобства чтения.

Мы использовали опцию -x для создания шестнадцатеричного суффикса. Затем разделили наш файл на 50 кусков и дали суффиксу длину 6.

split AndreyExLogFile.log _ -x -n50 -a6

 

И вот результат вышеупомянутой команды:

andreyex@destroyer:~/Documents$ ls
_000000  _000003  _000006  _000009  _00000c  _00000f  _000012  _000015  _000018  _00001b  _00001e  _000021  _000024  _000027  _00002a  _00002d  _000030
_000001  _000004  _000007  _00000a  _00000d  _000010  _000013  _000016  _000019  _00001c  _00001f  _000022  _000025  _000028  _00002b  _00002e  _000031
_000002  _000005  _000008  _00000b  _00000e  _000011  _000014  _000017  _00001a  _00001d  _000020  _000023  _000026  _000029  _00002c  _00002f  AndreyExLogFile.log

 

8. Разделите файлы на несколько файлов определенного размера

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

Синтаксис может стать немного сложнее, так как мы продолжаем добавлять опции. Итак, мы объясним, как работает команда, прежде чем показывать пример.

Если вы хотите создать файлы определенного размера, используйте опцию -b. Затем вы можете написать n K [B], n M [B], n G [B], где n – это значение размера вашего файла, а K [1024] – это -kibi, M – -mebi, G – -gibi и далее. КБ [1000] – килограмм, МБ – мега и т. д.

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

split AndreyExLogFile.log AndreyExSeparatedLogFiles.log_ -d -b 128KB

 

Вот разделенные файлы:

andreyex@destroyer:~/Documents$ ls
AndreyExLogFile.log               AndreyExSeparatedLogFiles.log_02  AndreyExSeparatedLogFiles.log_05  AndreyExSeparatedLogFiles.log_08
AndreyExSeparatedLogFiles.log_00  AndreyExSeparatedLogFiles.log_03  AndreyExSeparatedLogFiles.log_06  AndreyExSeparatedLogFiles.log_09
AndreyExSeparatedLogFiles.log_01  AndreyExSeparatedLogFiles.log_04  AndreyExSeparatedLogFiles.log_07  AndreyExSeparatedLogFiles.log_10

 

Вы можете проверить результат с помощью команды wc.

andreyex@destroyer:~/Documents$ wc AndreyExSeparatedLogFiles.log_0*
1605    4959  128000 AndreyExSeparatedLogFiles.log_00
1605    4969  128000 AndreyExSeparatedLogFiles.log_01
1605    4953  128000 AndreyExSeparatedLogFiles.log_02
1605    4976  128000 AndreyExSeparatedLogFiles.log_03
1605    4955  128000 AndreyExSeparatedLogFiles.log_04
1605    4975  128000 AndreyExSeparatedLogFiles.log_05
1605    4966  128000 AndreyExSeparatedLogFiles.log_06
1605    4964  128000 AndreyExSeparatedLogFiles.log_07
1605    4968  128000 AndreyExSeparatedLogFiles.log_08
1605    4959  128000 AndreyExSeparatedLogFiles.log_09
16050   49644 1280000 total

 

Читать  Grep с номером строки в выводе

9. Разбивка файлов на несколько с определенным размером файла

Если вы хотите разбить файлы примерно на один и тот же размер, но сохранить структуру строк , это может быть лучшим выбором для вас. С помощью -C, вы можете указать максимальный размер. Затем программа автоматически разбивает файлы на основе полных строк.

split AndreyExLogFile.log AndreyExNewLogFiles.log_ -d -C 1MB

 

В выводе вы можете видеть, что первый разделенный файл имеет размер около 1 МБ, тогда как остальная часть файла находится во втором файле.

andreyex@destroyer:~/Documents$ ll
total 2772
drwxr-xr-x  2 andreyex andreyex   81920 Jul 24 22:01 ./
drwxr-xr-x 19 andreyex andreyex    4096 Jul 23 22:23 ../
-rw-r--r--  1 andreyex andreyex 1369273 Jul 20 17:52 AndreyExLogFile.log
-rw-r--r--  1 andreyex andreyex  999997 Jul 24 22:01 AndreyExNewLogFiles.log_00
-rw-r--r--  1 andreyex andreyex  369276 Jul 24 22:01 AndreyExNewLogFiles.log_01

 

Бонусный совет: воссоединение разделенных файлов

Это не команда split, но она может быть полезна для новых пользователей.

andreyex@destroyer:~/Documents$ ls
xaa  xab  xac  xad  xae  xaf  xag  xah  xai  xaj  xak  xal  xam  xan  xao  xap  xaq  xar

 

Вы можете использовать другую команду, чтобы присоединиться к этим файлам и создать копию нашего полного документа. Команда cat – это сокращение от конкатенации, это просто причудливое слово, означающее «объединить элементы вместе». Поскольку все файлы начинаются с буквы «х», звездочка будет применять команду ко всем файлам, которые начинаются с этой буквы.

andreyex@destroyer:~/Documents$ cat x* > recoveredLogFile.log
andreyex@destroyer:~/Documents$ ls
recoveredLogFile.log  xab  xad  xaf  xah  xaj  xal  xan  xap  xar
xaa                   xac  xae  xag  xai  xak  xam  xao  xaq

 

Как видите, наш воссозданный файл имеет тот же размер, что и наш оригинал.

wc -l recreatedLogFile.log
17170 recreatedLogFile.log

 

Наше форматирование (включая количество строк) сохраняется в созданном файле.

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

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

2 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Александр

Спасибо! Пригодилось

Николай

Спасибо, до этого мучился с большой таблицей (> 3Gbt) в exel-формате

Split помог, но потом перешел на awk и задача упростилась

Это может быть вам интересно


Рекомендуемое
HTTP-сервер Apache является одним из самых популярных веб-серверов в мире. Это…

Спасибо!

Теперь редакторы в курсе.