Linux объединить файлы в один
Обновлено: 03.07.2024
Разделение и объединение файлов в 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
Команда 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 за которой следует двойной символ >> и имя файла в который вы хотите добавить текст.
cat >> file4.txt
На следующей строке появится курсор. Начните вводить текст который хотите добавить в файл. Когда закончите нажмите Enter после последней строки а затем нажмите Ctrl + D чтобы скопировать этот текст в конец файла и выйти из cat.
Оригинал: 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 Мб.
Посмотрим, что теперь у нас в директории:
Объединение файлов в командной строке
Перейдем в директорию, где лежат все части нашего файла и объединим их в один файл.
Разделим тот же файл с помощью команды split без указания каких-либо аргументов, как показано ниже.
Эта команда разрежет файл Linux Security.mp4 на множество файлов с именами вида x**.
Каждый файл содержит 1000 строк. Вы можете убедиться в этом с помощью команды wc (word count):
Объединить все эти части в один файл можно с помощью команды:
Приведенная выше команда объединит все файлы в один с именем ls.mp4.
Заключение
Конечно, имеется множество утилит, как консольных, так и графических, которые позволяют разрезать и объединять файлы в Linux. Однако "split" - это встроенная команда, которая входит в состав ядра Linux. Поэтому вам не понадобится устаналивать никаких дополнительных программ. К тому же эта команда работает очень быстро.
Немного подробнее о команде split вы можете узнать из следующей статьи: "Изучаем команды linux: split"
У меня есть 14 файлов, которые являются частью одного текста. Я хотел бы объединить их в один. Как это сделать?
Помните, что указанная вами команда, вероятно, будет делать то, что хочет плакат, если они пронумерованы таким образом, что оболочка расширяется * в «естественном» порядке. Если у вас есть «file1.txt . file9.txt . file14.txt», он не будет работать, потому что file1? .Txt будет сортировать между file1.txt и file2.txt. Вам придется переименовать их в «file01.txt . file09.txt . file14.txt». Скажи, echo * если ты не уверен. @Warren: хороший момент (или вы можете использовать zsh и установить его numeric_glob_sort опцию). @ Уоррен-молодой правильный, полезный предупреждающий комментарий. Но в моем случае порядок не имеет значения (поскольку файлы содержат просто простые операторы SQL, вставляющие записи данных, которые не имеют зависимостей). Осторожно, если количество файлов превышает определенный лимит, вы можете запустить с ошибками вроде - / bin / cat: список аргументов слишком длинный @ ARA1307 Только если файл уже существует; в противном случае глобус будет расширен до того, как оболочка откроет файл для записи в него. Хороший момент в этой ситуации, хотяЕсли ваши файлы не находятся в одном каталоге, вы можете использовать команду find до объединения:
Очень полезно, когда ваши файлы уже упорядочены, и вы хотите объединить их, чтобы проанализировать их.
Это может или не может сохранить порядок файлов.
Это путь, если у вас много файлов. Вы избегаете ошибки «список аргументов слишком длинный». Вам нужно -name "* .csv" вместо -name * .csv - без кавычек это не сработает. Потребность в кавычках зависит от версии команды find, особенно в find и awk. Это проблема, когда вы работаете на Mac, версии обеих программ немного устарели. До сих пор на Ubuntu, Fedora, Debian и CentOS все работало без кавычек Я ожидал бы котировочную версию работать , когда нет файлов в текущем каталоге , соответствующих шаблон "*.csv" , так как оболочка будет затем передать литерал * в find .фактически имеет нежелательный побочный эффект включения 'объединенного-файла' в конкатенацию, создавая файл-разборщик. Чтобы обойти это, либо напишите объединенный файл в другой каталог;
или используйте сопоставление с образцом, которое будет игнорировать объединенный файл;
cat * > merged-file работает отлично. Глобы обрабатываются до создания файла. Если он merged-file уже существует, cat (по крайней мере , мой) определит, что это выходной файл, и откажется его читать. Если файл уже существует, и у вас есть перенаправление позже в конвейере, то он, очевидно, не может этого сделать, так что тогда и только тогда вы получите файл побега. cat не может определить, является ли файл выходным. Перенаправление происходит в оболочке; cat только печатает на стандартный вывод.Как и другие здесь говорят . Вы можете использовать cat
Допустим, у вас есть:
И вы только хотите , file01 чтобы file03 и fileA к fileC :
Или, используя расширение скобки:
Или, используя причудливое расширение фигурных скобок:
Или вы можете использовать for цикл:
Обратите внимание, что строка 3 не будет работать в качестве шаблона сглаживания.Вы можете указать pattern файл, а затем объединить их все следующим образом:
Другой вариант - это sed:
Или без перенаправления .
Конечно, вы также можете сократить список файлов с подстановочными знаками. Например, в случае нумерованных файлов, как в приведенных выше примерах, вы можете указать диапазон в фигурных скобках следующим образом:
Команда cat является одной из наиболее широко используемых команд в Linux. Название cat команды происходит от его функциональности против кошачьих файлов Enate. Он может читать и объединять файлы, записывая их содержимое в стандартный вывод. Если файл не указан или имя входного файла указано как один дефис ( - ), он считывает из стандартного ввода.
Cat чаще всего используется для отображения содержимого одного или нескольких текстовых файлов, объединения файлов путем добавления содержимого одного файла в конец другого файла и создания новых файлов.
Синтаксис команды Cat
Прежде чем перейти к использованию команды cat, давайте начнем с обзора основного синтаксиса.
Выражения утилиты cat имеют следующую форму:
- OPTIONS - кошачьи варианты . Используйте cat --help для просмотра всех доступных опций.
- FILE_NAMES - Ноль или более имен файлов.
Отображение содержимого файла
Самое основное и распространенное использование команды cat - это чтение содержимого файлов.
Например, следующая команда отобразит содержимое /etc/issue файла в терминале:
Следующая команда будет копировать содержимое file1.txt с file2.txt помощью ( > оператора):
Обычно вы используете cp команду для копирования файла.Если file2.txt файл не существует, команда создаст его. В противном случае файл будет перезаписан.
Используйте ( >> оператор) , чтобы добавить содержимое из file1.txt к file2.txt :
То же, что и раньше, если файл отсутствует, он будет создан.
Печатать номера строк
Чтобы отобразить содержимое файла с номерами строк, используйте -n параметр:
Подавить повторяющиеся пустые строки
Используйте -s опцию, чтобы пропустить повторяющиеся пустые выходные строки:
Отображать символы табуляции
-T Опция позволяет визуально различать вкладки и пробелы.
Символы табуляции будут отображаться как ^I .
Показать конец строк
Чтобы отобразить невидимый символ окончания строки, используйте -e аргумент:
Окончания строк будут отображаться как $ .
Объединение файлов
При передаче двух или более имен файлов в качестве аргументов cat команде содержимое файлов будет объединено. cat читает файлы в последовательности, указанной в аргументах, и отображает содержимое файла в той же последовательности.
Например, следующая команда будет считывать содержимое file1.txt и file2.txt и отображать результат в терминале:
Вы можете объединить два или более текстовых файла и записать их в файл.
Следующая команда конкатенации содержимое file1.txt и file2.txt и записать их в новый файл , combinedfile.txt используя ( > оператор):
Если combinedfile.txt файл не существует, команда создаст его. В противном случае файл будет перезаписан.
Для того, чтобы объединить содержимое file1.txt и file2.txt и добавить результат на file3.txt использование ( >> оператор):
Если файла нет, он будет создан.
При объединении файлов с cat , вы можете использовать те же аргументы, что и в предыдущем разделе.
Создание файлов
Создание небольших файлов с cat ним часто проще, чем открытие текстового редактора, такого как nano , Vim, Sublime Text или Visual Studio Code.
Чтобы создать новый файл, используйте cat команду, за которой следует оператор перенаправления ( > ) и имя файла, который вы хотите создать. Нажмите Enter , введите текст и, как только вы закончите, нажмите, CRTL+D чтобы сохранить файл.
В следующем примере мы создаем новый файл с именем file1.txt :
Если файл с именем file1.txt присутствует, он будет перезаписан. Используйте >> оператор ' ', чтобы добавить вывод в существующий файл.
Вывод
Команда cat может отображать, комбинировать и создавать новый файл.
Читайте также: