- Как разрезать и соединять файлы в командной строке Linux
- Разрезание файлов в командной строке
- Объединение файлов в командной строке
- Заключение
- unixforum.org
- склеить два файла
- склеить два файла
- Re: склеить два файла
- Re: склеить два файла
- Re: склеить два файла
- Re: склеить два файла
- Re: склеить два файла
- Re: склеить два файла
- Re: склеить два файла
- Re: склеить два файла
- Re: склеить два файла
- Wpilot
- суббота, 11 мая 2019 г.
- Объединить текстовые файлы с помощью команды cat в Linux
- Быстрое объединение нескольких файлов в Linux
- 6 ответов
- Справочная информация
- понедельник, 6 июня 2016 г.
- Разрезать и склеить файл в Linux без терминала. Split и Join с GUI
- 1 вариант – Gmone Split
- 2 вариант – HJSplit
Как разрезать и соединять файлы в командной строке 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»
Источник
unixforum.org
Форум для пользователей UNIX-подобных систем
- Темы без ответов
- Активные темы
- Поиск
- Статус форума
склеить два файла
Модератор: /dev/random
склеить два файла
Сообщение susik » 14.01.2007 22:08
Re: склеить два файла
Сообщение Pavel Ghost » 14.01.2007 22:19
Смотря каких файлов — текстовых или двоичных.
Для первых — самый простой вариант:
cat file1.txt file2.txt > result_file.txt
Re: склеить два файла
Сообщение elide » 14.01.2007 22:33
Re: склеить два файла
Сообщение BaBL » 15.01.2007 01:46
Re: склеить два файла
Сообщение Mellon » 15.01.2007 03:22
Re: склеить два файла
Сообщение d_n_k » 15.01.2007 10:53
хочешь менять структуру файловой системы?
тогда читай маны по утилитам к твоей файловой системе.
а так man cat man dd
Re: склеить два файла
Сообщение susik » 15.01.2007 14:50
Смотря каких файлов — текстовых или двоичных.
Для первых — самый простой вариант:
cat file1.txt file2.txt > result_file.txt
Re: склеить два файла
Сообщение elide » 15.01.2007 18:29
Re: склеить два файла
Сообщение Slimy » 15.01.2007 19:23
хочешь менять структуру файловой системы?
тогда читай маны по утилитам к твоей файловой системе.
а так man cat man dd
Re: склеить два файла
Сообщение susik » 16.01.2007 09:08
Ну у меня была задача такая, я ее решил правда немного подругому, но все равно стало интересно как склеить два файла.
Значит в первом файле, назовем его допустим file1.txt, следующая информация:
mv ‘Track 1 Albom 1.mp3.HWFIUFG09345034THEEGH.test’
mv ‘Track 2 Albom 1.mp3.KJDHF39048UT930GUJDJFF.test
mv ‘Track 2 Albom 1.mp3.JISH904JF.test’
А во втором файле
‘Track 1 Albom 1.mp3’
‘Track 2 Albom 1.mp3’
‘Track 3Albom 1.mp3’
А результат в третьем файле должен быть:
Источник
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
Я использую многопроцессорную обработку 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 все ваши временные файлы в именованный канал, а затем использовать этот именованный канал в качестве входных данных для вашей программы с одним входом. Пока ваша программа с одним входом просто читает вход последовательно и не ищет.
Источник
Справочная информация
про свой опыт решения некоторых проблем и использования ряда возможностей ОС и приложений
понедельник, 6 июня 2016 г.
Разрезать и склеить файл в Linux без терминала. Split и Join с GUI
Необходимость в использовании инструментов разрезания и склейки файлов в Linux у меня ранее не возникало. Для передачи больших файлов с целью обмена мной успешно использовались файлообменные ресурсы, например, те же depositfiles или filefactory, предоставляющие время хранения не менее 90 суток. В связи с тем, что depositfiles предоставил свой менеджер файлов, с помощью которого успешно осуществлялась операция Upload, этот ресурс и использовался чаще всего.
Радикальным образом ситуация изменилась буквально за последние 2 дня. Загруженный мной для обмена файл был в течение дня удалён. Так как администрация этого сервиса вправе удалить любой файл без объяснения причин, то пришлось вернуться к широко использовавшемуся мной ранее файлообменнику Sendspace. А так как этот ресурс позволяет передать файлы не более 300 Мб, то у меня возникла проблема передачи файлов размером в 1,5 Гб.
Другой возможной необходимостью разбить и склеить файл является принципиальная невозможность записать на флэшку с файловой системой FAT32 файл размером более 4 Гб, что обусловлено свойствами самой файловой системы FAT32.
Поиск способов в Linux привёл в инструкции:
Разбить на кусочки по 10 Гб, можно такой командой:
split -b 10G big_file.ext
при этом имена файлов будут типа: xaa, xab, xac..
Далее копируем их к себе
Склеиваем в Linux:
cat xaa xab xac > big_file.ext
Склеиваем в Windows:
copy /B xaa+xab+xac big_file.ext
При всём уважении к терминалу хотелось бы чего-то более привычного, тем более, что мои респонденты, несмотря на их работу в Linux, вряд ли были бы в восторге от необходимости склеивать переданные им файлы в терминале.
Поискав в центре приложений своего Linux Mint по запросу в строке поиска split было найдено 2 варианта решения проблемы.
1 вариант – Gmone Split
Так как в Linux Mint ПО унифицировано для различных оболочек, то данное ПО присутствует и для Cinnamon, и для MATE и XFCE. Естественно, что данное ПО должно быть установлено как у Вас, так и тех, кому Вы будете передавать обработанные этим ПО файлы. После установки в меню программ появляется отображение, например,
При запуске программы отображается мастер (другими словами – Wizard), который будет «руководить» Вашими дальнейшими действиями.
Split a file – разрезать файл
Merge several files – склеить несколько файлов
Слева отображается полное меню, в котором выполняемая операция подсвечивается выделением:
В нижней части справа отображены кнопки дальнейших действий.
Если действие указано, то кнопка «Продолжить» становится активной. Если нажать «Отмена», то доступно главное окно программы, до этого «прикрытое» мастером.
В окне выбора файлов укажите файл, а затем способ его разбиения:
По умолчанию предлагается указать, на сколько частей разбивать выбранный файл. При этом размер каждого фрагмента будет определён программой самостоятельно. Но если нажать на стрелочку справа, то отобразятся и другие варианты:
В поле слева необходимо указать количество этих самых частей или размер в байтах, Кб, Мб, Гб и т.д.
Далее предлагается выбрать рабочий алгоритм:
Признаться откровенно, мной был испробован вариант только «Общий». Про назначение других вариантов ничего не могу сказать.
Перед самим процессом предлагается проверить выбранные настройки и при необходимости внести изменения, если где-то была допущена ошибка (размер отдельного фрагмента или способа разбиения):
Процесс разбиения файла отображается в графическом режиме:
На выходе Вы получите необходимое количество фрагментов файла с расширениями .001, .002, .003 .
Процесс склейки производится аналогично. Выбрать операцию «Merge several files» и указать файл с расширением .001
На выходе получится склеенный файл.
2 вариант – HJSplit
Этот вариант найден со ссылки от консольной утилиты LXSplit, в описании которой указано на её совместимость с программной HJSplit
Само собой разумеется, что Ваши респонденты также должны установить у себя такую же программу.
Пользователи Linux обращаются к секции Линукса и скачивают архив hjsplitlx.tar.gz В составе архива имеется сама программа и описание в виде файла txt «что это такое и с чем его едят».
Собственно программой является файл hjsplit. Проверьте, имеется ли у Вас указание на необходимость запуска этого файла как программы:
Интерфейс интуитивно понятен. Split – разрезать, Join – склеить. Сравнением (Compare) и контрольными суммами (Checksum) Вы вряд ли будете заниматься.
Нажимаете «Split», указываете файл, размер каждого фрагмента и нажимаете кнопку «Start».
Процесс отображается графическим индикатором, а по завершении выводится информационное сообщение.
Процесс склейки производится аналогично. Запускается программа, выбирается «Join», указывается файл с расширением .001 и нажимается кнопка «Start».
Источник