Linux разделить файл на части

Обновлено: 22.11.2024

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

Как разделить файлы по размеру в Linux:

В качестве первого примера этого руководства я буду использовать ISO-образ Windows размером 5 ГБ с именем WIN10X64.ISO. Чтобы узнать размер файла, который вы хотите разделить, вы можете использовать команду du -h, как показано на снимке экрана ниже.

Как видите, размер файла составляет 5 ГБ. Чтобы разделить его на 5 файлов по 1 ГБ каждый, вы можете использовать команду split, за которой следует флаг -b и желаемый размер разделенных файлов. G, определяющий единицу размера для ГБ, можно заменить на M для мегабайт или B для байтов.

Как видите, ISO-образ был разделен на 5 файлов с именами xaa, xab, xac, xad и xae.

По умолчанию команда split именует сгенерированные файлы в предыдущем примере, где xaa — первая часть, xab — вторая часть, xac третий и т. д. Как показано в примере ниже, вы можете изменить это и определить имя, оставив имя по умолчанию в качестве расширения.

Как видите, все файлы имеют имена Windows.* , расширение имени, заданное командой split, что позволяет нам узнать порядок файлов.

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

Как вы можете видеть, вывод прогресса показывает фазу разделения файла. В следующем примере показано, как разбить файлы на единицы МБ. Размер файла составляет 85 МБ.

Как разделить файлы по содержимому в Linux с помощью csplit:

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

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

Как вы можете видеть на изображении ниже, у нас есть 4 главы (они были отредактированы, чтобы вы могли видеть разделение глав). Допустим, вы хотите, чтобы каждая глава находилась в отдельном файле. Для этого мы будем использовать регулярное выражение «Глава».

Я знаю, что в этой книге 4 главы, поэтому нам нужно указать количество разбиений, которые мы хотим предотвратить. В приведенных ниже примерах я объясняю, как выполнить разбиение, не зная количества регулярных выражений или разбиений. Но в этом случае мы знаем, что есть 4 главы; таким образом, нам нужно разделить файл 3 раза.

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

На выходе мы видим количество байтов для каждой части файла.

Как видите, было создано 5 файлов, пустое место перед Главой 1 также было разделено.

Имена файлов будут такими же, как при использовании описанной выше команды разделения. Давайте посмотрим, как они были разделены.

Первый файл, xx00, пуст, это пустое место перед первым появлением регулярного выражения «Chapter», и файл разделяется.

Вторая часть правильно показывает только первую главу.

Третья часть показывает главу 2.

Четвертая часть показывает третью главу.

И последняя часть показывает главу 4.

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

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

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

Кроме того, если вы введете неправильное количество разделений, например, 6 разделений только с 4 регулярными выражениями, вы получите сообщение об ошибке, и разделение не произойдет, как показано в примере ниже.

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

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

Как видите, файл был правильно разделен.

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

Теперь вы знаете, как разделить файлы по размеру или содержимому. Следующим шагом является объединение или объединение файлов обратно. Простая задача с помощью команды cat.

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

Как видите, кошки умеют правильно упорядочивать файлы. Объединение или слияние файлов состоит из экспорта этого результата; вы можете сделать это, как показано в примере ниже, где combinedfile — это имя объединенного файла.

Как видно на следующем рисунке, файл был правильно объединен.

Вывод:

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

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

Об авторе

Дэвид Адамс

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

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

Имена файлов: PREFIXaa, PREFIXab, PREFIXac и т. д. По умолчанию префикс имени файла равен x, а размер каждого разделенного файла по умолчанию составляет 1000 строк на файл, и оба параметра можно легко изменить. Обычно он используется с файлами журналов и архивов, так как они очень большие и имеют много строк, поэтому для их разбиения на небольшие файлы для анализа используется команда разделения.

Синтаксис:

Работа с командой "Разделить"

<р>1. Разделить файл на короткие файлы. Предположим, имя файла с именем index.txt. Используйте приведенную ниже команду разделения, чтобы разбить его на части.

Файл

Index.txt разделен на две части с именами «xaa» и «xab». По умолчанию в каждом файле будет 1000 строк. Команды разделения называются «xaa» и «xab», так как мы не установили никакого значения префикса.

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

Файл

Index.txt разбивается на короткие файлы в зависимости от количества строк, которые мы хотим использовать с параметром -l, как показано.

<р>3. Команда разделения с подробной опцией. Мы также можем запустить команду split в подробном режиме, используя ‘-verbose’. Каждый раз при создании нового разделенного файла будет выдаваться диагностическое сообщение.

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

Примечание: Здесь нет необходимости использовать -l 4. Он используется только для понимания.

<р>4. Разделить размер файла с помощью параметра «-b».

Здесь он разделит файл index.txt на отдельные файлы с именами indexaa, indexab, ….. каждый файл содержит 16 байтов данных.

<р>5. Изменение длины суффикса. По умолчанию длина суффикса равна 2. Мы также можем изменить ее с помощью параметра «-a».

В данном случае он имеет длину суффикса 4 в разделенных файлах.

Примечание: Здесь нет необходимости использовать -l 4. Он используется только для понимания.

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

Примечание: Здесь нет необходимости использовать -l 4. Он используется только для понимания.

<р>7. Создайте n фрагментов выходных файлов. Если мы хотим разделить файл на три выходных файла фрагмента, используйте параметр «-n» с командой split, которая ограничивает количество разделенных выходных файлов.

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

<р>8. Разделить файл с индивидуальным суффиксом. С помощью этой команды мы можем создавать разделенные выходные файлы с настраиваемым суффиксом. Предположим, если мы хотим создать разделенные выходные файлы с суффиксом индекса, выполните следующую команду.

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

Примечание: Здесь нет необходимости использовать -l 4. Он используется только для понимания.

<р>9. Избегайте разделенных файлов нулевого размера. Бывают ситуации, когда мы разбиваем небольшой файл на большое количество файлов фрагментов, и это может привести к разделению выходных файлов нулевого размера. Они не добавляют никакой ценности, поэтому, чтобы этого избежать, мы используем опцию ‘-e’.

При использовании этого не будут создаваться разделенные выходные файлы нулевого размера.

Примечание: Здесь нет необходимости использовать -l 4. Он используется только для понимания.

<р>10. Разделите файл на два файла одинаковой длины. Чтобы разделить файл поровну на два файла, мы используем параметр «-n». При указании ‘-n 2’ файл делится поровну на два файла.

Как следует из названия, команда «split» используется для разделения или разбиения файла на части в системах Linux и UNIX. Всякий раз, когда мы разделяем большой файл с помощью команды split, размер разделенного выходного файла по умолчанию составляет 1000 строк, а его префикс по умолчанию будет «x».

В этой статье мы обсудим 11 полезных примеров команды разделения для пользователей Linux. Помимо этого, мы также обсудим, как разделенные файлы могут быть объединены или собраны в один файл. Синтаксис команды разделения:

Некоторые важные параметры команды split показаны ниже:

Пример: 1) Разделить файл на части

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

Как мы видим, приведенный выше вывод «tuxlab.txt» разделен на две части с именами «xaa» и «xab».

Пример: 2) Разделить команду с подробной опцией

Мы можем запустить команду split в подробном режиме с опцией ‘–verbose’, пример показан ниже:

Пример: 3) Разделить файлы с настраиваемыми номерами строк (-l)

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

Для этого используйте параметр «-l» в команде разделения.

Проверьте строки каждого файла с помощью приведенной ниже команды

Пример: 4) Разделить файлы по размеру с помощью параметра -b

Используя команду «Разделить», мы можем разделить файл по размеру файла. Используйте следующий синтаксис для разделения файлов с размером в байтах, КБ, МБ и ГБ

Разделить файл по байтам:

Разделить файл на основе КБ:

Разделить файл по МБ:

Разбить файл на основе ГБ:

Пример: 5) Создайте разделенные файлы с числовым суффиксом вместо буквенного (-d)

В приведенных выше примерах мы видели, что файлы вывода команды разделения создаются с буквенными суффиксами, такими как xaa, xab….. xan . Используйте параметр «-d» с командой разделения для создания файлов вывода разделения с числовыми суффиксами, такими как x00, x01 , … x0n

Пример: 6) Разделить файл с настраиваемым суффиксом

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

Синтаксис:

Пример: 7) Сгенерируйте n фрагментов выходных файлов с помощью команды разделения (-n)

Предположим, мы хотим разделить iso-файл на 4 выходных файла фрагментов. Используйте опцию ‘-n’ с командой split, чтобы ограничить количество разделенных выходных файлов.

Проверьте разделенные файлы с помощью команды ll.

Пример: 8) Запретить разделение выходных файлов по нулевому размеру с помощью параметра (-e)

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

Пример: 9) Создать разделенные выходные файлы с настраиваемой длиной суффикса (опция -a)

Предположим, что мы хотим разделить iso-файл, и размер каждого разделенного выходного файла составляет 500 МБ, а длина суффикса должна быть равна 3. Используйте следующую команду разделения:

Пример: 10) Разделить файл ISO и объединить его в один файл.

Предположим, у нас есть ISO-файл Windows Server размером 4,2 ГБ, и мы не можем отправить этот файл на удаленный сервер из-за его размера.

Чтобы решить такие проблемы, мы можем разделить ISO на n частей и скопировать эти части на удаленный сервер, а на удаленном сервере мы можем объединить эти части в один файл с помощью команды cat,

Просмотр разделенных выходных файлов с помощью команды ll,

Теперь перенесите эти файлы на удаленный сервер и объедините эти файлы в один с помощью команды cat

Пример: 11) Проверьте целостность файла слияния с помощью утилиты md5sum

Как и в примере 10, после объединения разделенных выходных файлов в один файл мы можем проверить целостность фактического и объединенного файла с помощью утилиты md5sum. Пример показан ниже:

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

Это все из этой статьи. Если вам нравятся эти примеры, поделитесь своими ценными отзывами и комментариями в разделе комментариев ниже.

Читайте также: 16 примеров команд Echo в Linux

В Linux есть несколько утилит для разбиения больших файлов на маленькие. Split и csplit — две популярные команды, которые используются для этой цели. Эти утилиты помогут разбить большие файлы журналов и даже архивировать файлы, чтобы уменьшить их размер. Это упростит разделение больших файлов на более мелкие, чтобы они поместились на небольших устройствах хранения данных, таких как USB, для достижения нашей цели. С помощью этого метода мы можем даже ускорить передачу файлов по сети, поскольку параллельная передача небольших файлов обычно выполняется быстрее.

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

Разделить

Чтобы разделить большие файлы на более мелкие, мы можем использовать эту командную утилиту в Linux.

Вы можете заменить имя файла именем большого файла, который хотите разделить. И «префикс» с именем, которое вы хотите дать небольшим выходным файлам. Вы можете исключить [options] или заменить одним из следующих:

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

Разделить примеры

Команда Split разбивает файл на n строк в файле и называет файлы как PREFIXaa, PREFIXab, PREFIXac и т. д. По умолчанию ПРЕФИКС равен x , а количество строк — 1000 строк в файле.

Разделить файл на несколько частей по умолчанию

У меня есть файл журнала, а именно системный журнал с 1099 строками, давайте посмотрим на состояние моего файла журнала после его разделения с помощью этой команды.

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

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

Мы можем разделить файл на несколько частей в зависимости от количества строк, используя параметр -l. Здесь я разбиваю файл системного журнала из 1099 строк на более мелкие файлы по 200 строк в каждом. Давайте посмотрим на команды для того же:

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

Разделить большой файл на файлы по 500 МБ

Вы можете использовать параметр -b, чтобы указать необходимый предельный размер для разделения файлов. Пожалуйста, посмотрите эту команду, которую я использовал для разделения файла журнала Apache размером 1 ГБ на два файла по 500 МБ каждый.

Разбить большой файл на файлы по 200 МБ с заданным префиксом

Вы можете использовать параметр -b, чтобы указать размер файла 200 МБ и требуемый префикс в качестве второго аргумента. Пожалуйста, смотрите команду, которую я использовал для разделения моего журнала Apache размером 1 ГБ на файлы размером 200 МБ с префиксом split.log ниже:

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

Разделите файл и назовите его цифрами

Вы можете использовать параметр -d, чтобы называть файлы с числовыми суффиксами 00, 01, 02 .. и т. д. вместо aa, ab, ac. Пожалуйста, посмотрите команду, которую я использовал, чтобы разделить мой журнал Apache размером 1 ГБ на файлы размером 200 МБ с префиксом log и добавить числа к суффиксу, используя параметр -d вместо алфавитов ниже:

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

Сплит

Csplit — это еще одна командная утилита, которая делит отдельные файлы на несколько файлов, определяемых строками контекста.

Файлы, созданные csplit, обычно имеют имена вида

xxnumber
где число – это двузначное десятичное число, которое начинается с нуля и увеличивается на единицу для каждого нового файла, создаваемого csplit.

csplit также отображает размер в байтах каждого файла, который он создает в качестве вывода.

Примеры разделения

По умолчанию файлы, создаваемые csplit, имеют префикс «xx» в качестве префикса, а числа, полученные в выходных данных, представляют собой количество байтов для файлов, созданных командой.

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

У меня есть файл, который содержит 8 строк с доменными именами, и мне нужно разделить этот файл на четвертой строке, тогда это можно сделать, передав «4» в качестве аргумента командной строки после команды и имени файла. .

Передавая 4 в качестве аргумента командной строки, эта команда разбивает наш файл domainslist на 4-й строке. Цифры, полученные в выходных данных, представляют собой количество байтов для файлов, созданных командой. Судя по всему, на выходе получилось два файла, а именно xx00 и xx01.

Разделить файлы с помощью регулярных выражений

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

В этом случае мы можем получить три выходных файла.

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

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

По умолчанию csplit разделяет файлы и создает выходные файлы с префиксом xx. Однако при желании вы можете изменить этот префикс по умолчанию с помощью параметра -f в командной строке с требуемым префиксом.

Например, следующая команда создаст файлы с префиксом «домен».

Разделить файл, удалив строку, соответствующую введенному шаблону

Эта команда csplit позволяет скрыть строки, соответствующие входному шаблону. Рассматриваемый параметр --suppress-matched .

Например, следующая команда разбивает наш файл по строке 4 (xx00 будет содержать до строки 3, а xx11 будет содержать остальные строки, исключая строку 4).

Настроить количество цифр в именах выходных файлов

По умолчанию количество цифр, следующих за префиксом в имени выходного файла, равно 2. Мы можем использовать эту опцию -n, чтобы настроить количество цифр, следующих за префиксом в именах выходных файлов. Например, если вы хотите иметь такие имена, как xx001, вы можете использовать параметр командной строки, который требует ввода числа, обозначающего количество цифр, таких как -n 3, как показано ниже:

Заставить csplit сохранять выходной файл в случае ошибки

По умолчанию csplit удаляет выходные файлы, созданные в случае какой-либо ошибки. Однако, если вы хотите принудительно сохранить этот выходной файл, используя параметр -k в команде. Посмотрите этот пример, чтобы увидеть разницу в выполнении этой команды с параметром -k и без него.

По умолчанию csplit удаляет выходные файлы, созданные в случае какой-либо ошибки. Однако мы можем принудительно сохранить этот выходной файл, используя параметр «-k» в команде. Пожалуйста, проверьте этот пример, чтобы увидеть разницу в выполнении этой команды с параметром -k и без него. В этом первом примере команда предназначена для разделения нашего файла 'domainslist' в строке 3 и повторения команды дважды, что означает, что она также должна разделить второй файл в строке 3 и повторить ее еще раз.Но поскольку в нашем исходном файле всего восемь строк, после первого разбиения он повторяется один раз, но не может повториться дважды из-за недостаточного диапазона. Следовательно, из-за этой ошибки выходные файлы не создаются.

Но когда мы выполнили ту же команду с этой опцией -k, выходные файлы не были удалены. Посмотрите результат ниже:

Вы можете проверить справочную страницу этого инструмента, используя man csplit, чтобы получить больше информации об этом.

Подведение итогов

Эти утилиты командной строки могут не требоваться пользователю Linux ежедневно, но это одна из важных утилит, которая будет полезна вам при администрировании вашего сервера. Я надеюсь, что эта статья объяснила все основные параметры и способы использования этих инструментов. Оставляйте свои ценные комментарии и предложения по этому поводу.

Читайте также: