Меню Рубрики

Linux склеить два файла

Объединение файлов командой cat

Команду cat в большинстве случаев используют только для просмотра файлов. На самом деле одно из ее предназначений это конкатенация (объединение) файлов. А название команды происходит от слова catenate (сцепить), то есть присоединение одного после другого.

Под объединением файлов понимается их соединение. Например, если мы имеем два текстовых файла и в одном из них записана строка:
My text file 1

А в другом:
My text file 2

То после объединения мы получим файл с двумя строками:
My text file 1
My text file 2

То есть происходит простое соединение файлов. К содержимому одного добавляется содержимое другого. Это касается не только текстовых файлов, но и всех остальных (бинарных, например).

Чтобы объединить два файла командой cat нужно просто указать в качестве аргументов названия этих файлов и направить результат выполнения в новый файл. Например, мы хотим объединить два файла file1 и file2, а результат записать в новый файл file12. Тогда мы должны выполнить следующую команду:

Вы можете объединить неограниченное количество файлов. Например, чтобы объединить четыре файла и записать результат в файл myfile, выполните команду:

Источник

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.

Источник

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’

А результат в третьем файле должен быть:

Источник

Быстрое объединение нескольких файлов в 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 все ваши временные файлы в именованный канал, а затем использовать этот именованный канал в качестве входных данных для вашей программы с одним входом. Пока ваша программа с одним входом просто читает вход последовательно и не ищет.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

  • Как распаковать exe на mac os
  • Как разрешить запись на внешний жесткий диск в mac os
  • Как разделить жесткий диск на mac os
  • Как раздать wifi на mac os
  • Как развернуть окно на весь экран на mac os