- Как разрезать и соединять файлы в командной строке Linux
- Разрезание файлов в командной строке
- Объединение файлов в командной строке
- Заключение
- Wpilot
- суббота, 11 мая 2019 г.
- Объединить текстовые файлы с помощью команды cat в Linux
- Как разделить и объединить файлы в Linux
- Что раскол?
- Что такое кошка?
- Как разделить и объединить файлы в Linux с помощью split и cat
- Быстрое объединение нескольких файлов в Linux
- 6 ответов
- Как разрезать и соединять файлы в командной строке Linux
- Разрезание файлов в командной строке
- Объединение файлов в командной строке
- Заключение
Как разрезать и соединять файлы в командной строке Linux
Оригинал: How To Split And Combine Files From Command Line In Linux
Автор: SK
Дата публикации: 2 мая 2017 года
Перевод: А. Кривошей
Дата перевода: сентябрь 2017 г.
На моем ноутбуке хранится множество обучающих видео по Linux. Я хотел бы загрузить их все на Google Drive, чтобы иметь резервные копии. Проблема в том, что эти видеоролики размером более 1 гигабайта, что плохо подходит для загрузки на диск Google. Несмотря на то, что Google Drive поддерживает загрузку файлов размером до 5 Тб, на практике для загрузки больших файлов требуется слишком много времени. Рассматривая эту проблему, я понял, что было бы намного лучше, если бы я мог разделить эти файлы на меньший размер и загружать их по одному. Затем я могу загрузить все части файла и объединить их все, когда захочу. Есть простая утилита командной строки, называемая «split», которая используется для разделения больших файлов на несколько файлов меньшего размера, и вы можете позже соединить все эти части в один файл.
В этом кратком руководстве я покажу вам, как разрезать и соединять файлы в командной строке Unix-подобных операционных систем.
Разрезание файлов в командной строке
Давайте посмотрим на размер этого видеоролика.
Как вы можете видеть, размер видео 1,1 Гб, что очень много для загрузки на мой диск google. С моей скоростью интернет-соединения это займет более 30 минут. Я не хочу ждать так долго. Поэтому я хочу разделить файл на несколько частей, например по 100 Мб, чтобы потом быстро загрузить их одну за одной.
Для этого используем команду:
Команда создаст файлы ls.aa, ls.ab, ls.ac.. и так далее, размером по 100 Мб.
Посмотрим, что теперь у нас в директории:
Файл Linux Security.mp4 разрезан на части с именами ls.aa, ls.ab …. ls.ak, каждая по 100 Мб.
Теперь намного проще отправить их в качестве вложения в электронное письмо.
Объединение файлов в командной строке
Перейдем в директорию, где лежат все части нашего файла и объединим их в один файл.
Здесь Linux_security.mp4 — имя собираемого файла. Два знака вопроса (??) означают искать в имени файла любое расширение из двух символов. Для упрощения часть имени ls. соответствует всем названиям файлов ls.aa, ls.ab . которые объединяются в один файл.
Не забудьте указать правильное расширение при объединении частей. В случае, если вы хотите отправить все файлы по почте своему другу, сообщите ему правильное расширение файлов, которые вы отправили. Он должен использовать одно и то же расширение файла в выходном файле при их объединении.
Если вы не укажете в команде split никаких аргументов, файл будет разбит на несколько частей с именами вида x **. По умолчанию каждый файл будет содержать 1000 строк. Здесь ** — это двухсимвольный суффикс, который по умолчанию добавляется к каждому имени файла.
Разделим тот же файл с помощью команды split без указания каких-либо аргументов, как показано ниже.
Эта команда разрежет файл Linux Security.mp4 на множество файлов с именами вида x**.
Каждый файл содержит 1000 строк. Вы можете убедиться в этом с помощью команды wc (word count):
Объединить все эти части в один файл можно с помощью команды:
Приведенная выше команда объединит все файлы в один с именем ls.mp4.
Заключение
Конечно, имеется множество утилит, как консольных, так и графических, которые позволяют разрезать и объединять файлы в Linux. Однако «split» — это встроенная команда, которая входит в состав ядра Linux. Поэтому вам не понадобится устаналивать никаких дополнительных программ. К тому же эта команда работает очень быстро.
Немного подробнее о команде split вы можете узнать из следующей статьи: «Изучаем команды linux: split»
Источник
Wpilot
суббота, 11 мая 2019 г.
Объединить текстовые файлы с помощью команды cat в Linux
Команда cat очень полезна в Linux. Она имеет три основные функции связанные с манипулированием текстовыми файлами: создание, отображение и объединение.
Давайте предположим что у вас есть три текстовых файла: file1.txt, file2.txt и file3.txt. Вы хотите объединить их в один текстовый файл содержащий информацию о всех трех в указанном порядке. Вы можете сделать это с помощью команды cat.
Просто откройте терминал и введите следующую команду:
cat file1.txt file2.txt file3.txt
Замените имена файлов в приведенном выше примере своими именами.
Объединенное содержимое трех текстовых файлов появится в вашем терминале.
Вероятно вы захотите объединить эти текстовые файлы в другой текстовый файл а не просто распечатать результаты на экране терминала. Это очень просто. Все что вам нужно сделать это добавить символ > после списка объединяемых файлов а затем указать имя окончательного текстового файла.
cat file1.txt file2.txt file3.txt> file4.txt
Теперь если вы откроете файл file4.txt с помощью команды cat или с помощью выбранного вами текстового редактора вы обнаружите что он содержит текст первых трех текстовых файлов.
Если вы объединяете списки элементов из нескольких файлов и хотите чтобы они были в алфавитном порядке в объединенном файле вы можете отсортировать объединенные элементы в конечном файле. Для этого используйте команду sort. Все строки текста в файле в результате будут отсортированы в алфавитном порядке.
cat file1.txt file2.txt file3.txt | sort > file4.txt
Существует также способ добавления файлов в конец существующего файла. Введите команду cat а затем файл которые вы хотите добавить в конец существующего файла. Затем введите два символа >> и имя конечного файла в который хотите добавить текст.
cat file5.txt >> file4.txt
Если вы хотите добавить немного нового текста в существующий текстовый файл используйте команду cat чтобы сделать это непосредственно из терминала. Введите команду cat за которой следует двойной символ >> и имя файла в который вы хотите добавить текст.
На следующей строке появится курсор. Начните вводить текст который хотите добавить в файл. Когда закончите нажмите Enter после последней строки а затем нажмите Ctrl + D чтобы скопировать этот текст в конец файла и выйти из cat.
Источник
Как разделить и объединить файлы в Linux
Разделение и объединение файлов в Linux — довольно простая задача, которая позволит нам фрагментировать файл на несколько файлов меньшего размера, что во многих случаях помогает нам фрагментировать файлы, которые занимают много места в памяти, либо для переноса их на внешние устройства хранения, либо для политик безопасности, таких как поддержание фрагментированных и распределенных копий наших данных. Для этого простого процесса мы будем использовать две важные команды split и cat.
Что раскол?
Это команда для систем Юникс который позволяет нам разделить файл на несколько меньших, он создает серию файлов с расширением и коррелятом исходного имени файла, имея возможность параметризовать размер результирующих файлов.
Чтобы углубиться в объем и характеристики этой команды, мы можем выполнить man split, где мы можем увидеть ее подробную документацию.
Что такое кошка?
В свою очередь, команда linux cat позволяет объединять и отображать файлы легко и эффективно, то есть с помощью этой команды мы можем просматривать различные текстовые файлы, а также можем объединять разделенные файлы.
Так же, как и в случае с split, мы можем просмотреть подробную документацию cat с помощью команды man cat.
Как разделить и объединить файлы в Linux с помощью split и cat
Как только вы освоите основы команд split и cat, разделить и объединить файлы в Linux будет довольно просто. Для общего примера, когда мы хотим разделить файл с именем test.7z, который весит 500 МБ, на несколько файлов по 100 МБ, нам просто нужно выполнить следующую команду:
$ split -b 100m tes.7z dividido
Эта команда вернет 5 файлов по 100 МБ, полученных из исходного файла, который будет иметь имена splitaa, splitab и так далее. Стоит отметить, что если мы добавим параметр -d в предыдущей инструкции имя результирующих файлов было бы числовым, то есть разделенное01, разделенное02 .
$ split -b -d 100m tes.7z dividido
Теперь, чтобы воссоединить файлы, которые мы разделили, нам просто нужно выполнить следующую команду из каталога, в котором хранятся файлы:
$ cat dividido* > testUnido.7z
С помощью этих небольших, но простых шагов мы можем легко и просто разделять и объединять файлы в Linux, я надеюсь, вам это понравится и до встречи в следующей статье.
Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.
Полный путь к статье: Из Linux » GNU / Linux » Как разделить и объединить файлы в Linux
Источник
Быстрое объединение нескольких файлов в Linux
Я использую многопроцессорную обработку Python для создания временного выходного файла для каждого процесса. Они могут быть размером несколько GBs, и я делаю несколько десятков из них. Эти временные файлы должны быть объединены, чтобы сформировать желаемый результат, и это шаг, который оказывается узким местом (и убийцей параллелизма). Есть ли инструмент Linux, который создаст конкатированный файл, изменив метаданные файловой системы и фактически не скопировав содержимое ? Пока он работает на любой системе Linux, которая будьте приемлемы для меня. Но решение для файловой системы не будет иметь большой помощи.
Я не обучен OS или CS, но теоретически кажется, что можно создать новый индекс и скопировать структуру указателя индекса из индекса файлов, из которых я хочу скопировать, а затем разорвать эти индексы. Есть ли какая-то польза, которая сделает это ? Учитывая избыток хорошо продуманных утилит unix, я полностью ожидал, что это будет, но ничего не смог найти. Отсюда мой вопрос о SO. Папка система находится на блочном устройстве, на жестком диске, Если эта информация имеет значение. У меня нет уверенности, чтобы написать это самостоятельно, так как я никогда не занимался программированием на системном уровне, поэтому любые указатели (на фрагменты кода C/Python) будут очень полезны.
6 ответов
даже если бы был такой инструмент, это могло бы работать только в том случае, если файлы, кроме последнего гарантированный размер, который является кратным блоку файловой системы размер.
если вы контролируете, как данные записываются во временные файлы, а вы знаю как большой каждый из них будет, вы можете вместо этого сделать следующее
перед началом многопроцессорной обработки создайте конечный выходной файл и увеличьте ее окончательный размер от fseek() ing в конце концов, это создаст разреженным файлом.
начните мультипроцессинг, вручая каждому процессу ФД и смещение в свое конкретный фрагмент файла.
таким образом, процессы будут совместно заполняют один выходной файл, избавляясь от необходимости сводить их вместе позже.
редактировать
если вы не можете предсказать размер индивидуальные файлы, но потребитель окончательный файл может работать с последовательным (в отличие от случайного доступа) входом, вы можете кормить cat tmpfile1 .. tmpfileN потребителю, либо на stdin
или через именованные каналы (используя замену процесса bash):
вы указываете, что заранее не знаете размер каждого временного файла. Имея это в виду, я думаю, что ваш лучший выбор-написать взрыватель файловая система, которая будет представлять куски как один большой файл, сохраняя их как отдельные файлы в базовой файловой системе.
в этом решении ваши производящие и потребляющие приложения остаются неизменными. Производители выписывают кучу файлов, которые делает слой предохранителей появляется отдельным файлом. Этот затем виртуальный файл представляется потребителю.
FUSE имеет привязки для множества языков,включая Python. Если вы посмотрите на некоторые примеры здесь или здесь (это для разных Привязок), для этого требуется удивительно мало кода.
Я так не думаю, inode может быть выровнен, поэтому это возможно, только если вы в порядке, чтобы оставить некоторые нули (или неизвестные байты) между Нижним колонтитулом одного файла и заголовком другого файла.
вместо объединения этих файлов я хотел бы предложить перепроектировать инструмент анализа для поддержки поиска из нескольких файлов. Например, многие анализаторы журналов поддерживают чтение файлов журналов в течение одного дня.
@san: как вы говорите код в использование вы не можете контролировать, ну вы можете объединить отдельные файлы на лету, используя именованные каналы:
для 4 файлов; ХАА, xab, xac ПО, на амберлите xAD быстрый concatention в bash (как root):
(предположим, что loop0, loop1, loop2, loop3-это имена новых файлов устройств.)
поставить http://pastebin.com/PtEDQH7G в файл сценария «join_us». Тогда вы можете использовать его следующим образом:
затем (если этот большой файл является фильмом) вы можете дать его право собственности обычному пользователю (chown itsme / dev / mapper / joined), а затем он / она может воспроизвести его через: mplayer/dev/mapper / присоединился
очистка после них (как root):
нет, нет такого инструмента или операции.
вы можете исследовать, возможно ли для каждого процесса записывать непосредственно в окончательный файл. Скажем, процесс 1 записывает байты 0-X, процесс 2 записывает X-2X и так далее.
потенциальной альтернативой является cat все ваши временные файлы в именованный канал, а затем использовать этот именованный канал в качестве входных данных для вашей программы с одним входом. Пока ваша программа с одним входом просто читает вход последовательно и не ищет.
Источник
Как разрезать и соединять файлы в командной строке Linux
Оригинал: How To Split And Combine Files From Command Line In Linux
Автор: SK
Дата публикации: 2 мая 2017 года
Перевод: А. Кривошей
Дата перевода: сентябрь 2017 г.
На моем ноутбуке хранится множество обучающих видео по Linux. Я хотел бы загрузить их все на Google Drive, чтобы иметь резервные копии. Проблема в том, что эти видеоролики размером более 1 гигабайта, что плохо подходит для загрузки на диск Google. Несмотря на то, что Google Drive поддерживает загрузку файлов размером до 5 Тб, на практике для загрузки больших файлов требуется слишком много времени. Рассматривая эту проблему, я понял, что было бы намного лучше, если бы я мог разделить эти файлы на меньший размер и загружать их по одному. Затем я могу загрузить все части файла и объединить их все, когда захочу. Есть простая утилита командной строки, называемая «split», которая используется для разделения больших файлов на несколько файлов меньшего размера, и вы можете позже соединить все эти части в один файл.
В этом кратком руководстве я покажу вам, как разрезать и соединять файлы в командной строке Unix-подобных операционных систем.
Разрезание файлов в командной строке
Давайте посмотрим на размер этого видеоролика.
Как вы можете видеть, размер видео 1,1 Гб, что очень много для загрузки на мой диск google. С моей скоростью интернет-соединения это займет более 30 минут. Я не хочу ждать так долго. Поэтому я хочу разделить файл на несколько частей, например по 100 Мб, чтобы потом быстро загрузить их одну за одной.
Для этого используем команду:
Команда создаст файлы ls.aa, ls.ab, ls.ac.. и так далее, размером по 100 Мб.
Посмотрим, что теперь у нас в директории:
Файл Linux Security.mp4 разрезан на части с именами ls.aa, ls.ab …. ls.ak, каждая по 100 Мб.
Теперь намного проще отправить их в качестве вложения в электронное письмо.
Объединение файлов в командной строке
Перейдем в директорию, где лежат все части нашего файла и объединим их в один файл.
Здесь Linux_security.mp4 — имя собираемого файла. Два знака вопроса (??) означают искать в имени файла любое расширение из двух символов. Для упрощения часть имени ls. соответствует всем названиям файлов ls.aa, ls.ab . которые объединяются в один файл.
Не забудьте указать правильное расширение при объединении частей. В случае, если вы хотите отправить все файлы по почте своему другу, сообщите ему правильное расширение файлов, которые вы отправили. Он должен использовать одно и то же расширение файла в выходном файле при их объединении.
Если вы не укажете в команде split никаких аргументов, файл будет разбит на несколько частей с именами вида x **. По умолчанию каждый файл будет содержать 1000 строк. Здесь ** — это двухсимвольный суффикс, который по умолчанию добавляется к каждому имени файла.
Разделим тот же файл с помощью команды split без указания каких-либо аргументов, как показано ниже.
Эта команда разрежет файл Linux Security.mp4 на множество файлов с именами вида x**.
Каждый файл содержит 1000 строк. Вы можете убедиться в этом с помощью команды wc (word count):
Объединить все эти части в один файл можно с помощью команды:
Приведенная выше команда объединит все файлы в один с именем ls.mp4.
Заключение
Конечно, имеется множество утилит, как консольных, так и графических, которые позволяют разрезать и объединять файлы в Linux. Однако «split» — это встроенная команда, которая входит в состав ядра Linux. Поэтому вам не понадобится устаналивать никаких дополнительных программ. К тому же эта команда работает очень быстро.
Немного подробнее о команде split вы можете узнать из следующей статьи: «Изучаем команды linux: split»
Источник