Объединить текстовые файлы в один
Склеивает сотни TXT, CSV и MD в один файл: порядок по номеру в имени, имя файла перед частью, срез одинаковой шапки и подвала у каждого
Открывали 175 раз
Инструмент справился с вашей задачей?
Одно нажатие, без регистрации. По ответам мы решаем, какие инструменты дорабатывать первыми.
Ваш ответ здесь будет первым.
Комментарии (1)
Дмитрий · 10 дней назад
Здравствуйте! Объединение текстовых файлов - вещь, но не хватает возможности добавления пустой строки между файлами, чтобы было и имя файла и пустая строка перед ним. Т.е.: Имя файла.txt Содержимое файла Пустая строка Имя следующего файла .txt Содержимое файла Пустая строка и т.д.
Как объединить txt файлы в один онлайн
Инструмент склеивает много текстовых файлов в один общий файл. Выберите файлы или целую папку либо перетащите их в окно, нажмите «Объединить» и скачайте результат. Части идут друг за другом в порядке имён файлов, на стыках ничего не слипается и не теряется.
Подходят любые текстовые файлы: .txt, .csv, .md, .log и другие. Служебные файлы операционных систем (.DS_Store, Thumbs.db, desktop.ini, папка __MACOSX и файлы, начинающиеся с «._») отбрасываются сразу при выборе. Картинки, документы Word, архивы и файлы в UTF-32 в общий файл не попадают: они отмечены в отчёте после обработки.
Ограничения на число файлов нет: можно склеить и десяток страниц, и тысячи файлов из папки. Файлы обрабатываются по очереди, прогресс виден по ходу работы, а отменить её можно на середине.
Вся работа идёт в вашем браузере. Файлы не отправляются на сервер сайта, а исходные файлы на диске остаются как были: вы скачиваете новый общий файл.
Порядок файлов: 1, 2, 10, а не 1, 10, 2
Файлы встают в порядке имён, причём числа в имени сравниваются по значению: «стр2.txt» идёт раньше «стр10.txt», «глава 9» — раньше «глава 11». При обычном посимвольном сравнении после «стр1» сразу шла бы «стр10», и страницы в общем файле перемешались бы.
Сравнивается весь путь внутри выбранной папки, поэтому файлы из подпапок идут группами, в порядке имён подпапок. Буквы сравниваются по русскому алфавиту.
Порядок, в котором вы выбирали файлы, на результат не влияет. До запуска инструмент показывает первые и последние имена в очереди склейки, и по ним видно, что порядок верный. Чтобы поставить файл в другое место, переименуйте его: например, допишите номер в начало имени.
Что ставить между файлами: ничего, пустую строку или имя файла
По умолчанию части идут подряд, без разделителя. Если файл не кончается переводом строки, инструмент дописывает его перед следующим файлом, причём того же вида, что в самом файле (CRLF или LF). Так последняя строка одного файла не слипается с первой строкой следующего. Последний файл остаётся как был: если перевода строки в его конце не было, не будет его и в конце общего файла.
Вариант «пустая строка» вставляет одну пустую строку между файлами. Так удобно склеивать главы, заметки и записи, которые в общем файле должны оставаться отдельными.
Вариант «имя файла отдельной строкой» пишет перед каждой частью отдельную строку с именем её файла. Если выбрана папка, её название в эту строку не попадает, а подпапки попадают, например «2024/март.txt». По таким строкам в общем файле видно, откуда взята каждая часть, и их легко найти поиском.
Пустые файлы в общий файл ничего не добавляют, и разделитель для них не пишется.
Перед склейкой убрать одинаковую шапку и подвал у каждого файла
Страницы, скачанные с сайта, выгрузки из программ и отчёты часто начинаются одной и той же шапкой и заканчиваются одним и тем же подвалом. При простой склейке они окажутся в общем файле столько раз, сколько было файлов. В блоке «Перед склейкой убрать у каждого файла» их можно отрезать одним из трёх способов. По умолчанию ничего не отрезается.
По числу строк: у каждого файла уходят N первых и M последних строк. Подходит, когда шапка и подвал везде одной длины.
До и после строки-метки: уходит всё до первой строки, в которой встречается заданный текст, и всё начиная с последней строки с другим заданным текстом. Регистр букв не важен, саму строку с меткой можно удалить или оставить. Если в каком-то файле метка не нашлась, эта сторона файла не режется, а сам файл попадает в отчёт.
Одинаковые шапка и подвал у всех файлов: инструмент сам сравнивает файлы между собой. Шапкой считаются строки в начале, совпадающие у половины файлов и больше, подвалом — такие же строки в конце. Строки, которые различаются только цифрами (номер страницы, дата выгрузки), засчитываются, когда стоят внутри шапки или подвала рядом с точно совпадающими строками. Поэтому подвал со списком номеров страниц срезается целиком, даже если у разных файлов он разной длины.
Если каждый файл начинается строкой «Глава 1», «Глава 2» и так далее, эти строки остаются: строка, которая совпадает с другими только после замены цифр, сама по себе шапкой не считается. Шапка ищется среди первых 80 строк каждого файла, подвал — среди последних 80. Для сравнения нужно хотя бы два файла.
Срез идёт по байтам файла и не меняет ни кодировку, ни переводы строк в оставшейся части. Тот же срез без склейки, с выгрузкой архивом ZIP, есть в инструменте «Удалить первые и последние строки».
Объединить CSV-файлы в один: заголовок столбцов только один раз
Чтобы объединить CSV-файлы с одинаковыми столбцами в одну таблицу, строка с названиями столбцов нужна только в начале. Для этого есть галочка «Заголовок CSV оставить только у первого файла».
Если перед склейкой ничего не отрезается, галочка убирает первую строку у всех файлов, кроме первого. Если выбран один из способов среза, галочка оставляет верх первого файла нетронутым, а у остальных файлов шапка срезается как обычно. В обоих случаях заголовок таблицы попадает в общий файл ровно один раз.
Первым считается первый по порядку файл, который оставляет в общем файле хоть что-то: если он пустой, заголовок сохранится у следующего. Если все файлы — .csv, общий файл тоже получит расширение .csv.
Разделители «пустая строка» и «имя файла отдельной строкой» для таблиц не подходят: они добавят в CSV лишние строки. И учтите, что значение в кавычках с переводом строки внутри для инструмента — несколько строк. Если такое значение стоит в заголовке, проверьте результат.
Разные кодировки и переводы строк: UTF-8, Windows-1251, UTF-16, CRLF и LF
Кодировка каждого файла определяется отдельно: UTF-8 с меткой BOM или без неё, Windows-1251, UTF-16. Если у всех файлов она одна, общий файл получает её же, а содержимое частей переносится байт в байт. Файлы только из латиницы, цифр и знаков препинания подходят и к UTF-8, и к Windows-1251 и смены кодировки не вызывают.
Если кодировки разные, например старые файлы в Windows-1251, а новые в UTF-8, каждый файл читается в своей кодировке, а общий файл записывается в UTF-8 без BOM. Инструмент сообщает об этом отдельной строкой рядом с кнопкой скачивания и показывает, сколько файлов было в каждой кодировке, а у групп до трёх файлов — их имена. Простая склейка байтов в таком случае испортила бы часть текста: кириллица одной из кодировок превратилась бы в «кракозябры».
Метка BOM — невидимые байты в начале файла. При склейке командами cat или copy /b метка каждого следующего файла оказывается посреди текста невидимым символом U+FEFF. На экране его не видно, но строка с ним уже не равна такой же строке без него. Здесь метка остаётся только в начале общего файла, и только если она была у первого файла, а у остальных снимается. У файлов в UTF-16 метка тоже одна, в начале.
Две настройки меняют это поведение. «Кодировка результата: UTF-8» записывает общий файл в UTF-8 без BOM, в каких бы кодировках ни были части. «Переводы строк» по умолчанию оставлены как в файлах, а варианты «Windows (CRLF)» и «Unix (LF)» приводят все переводы строк во всех частях к одному виду. Это касается и одиночного CR, которым отделяли строки старые программы для Mac.
Как объединить txt файлы через командную строку: cat, copy /b, PowerShell
Для разовой склейки хватит и командной строки. Ниже команды и то, что они делают с порядком файлов, метками BOM и кодировкой.
Linux: cat *.txt > all.txt склеивает файлы байт в байт. Порядок задаёт подстановка *, а она сравнивает числа в именах не по значению, а цифра за цифрой: стр10.txt окажется раньше стр2.txt. Метка BOM каждого файла остаётся на месте, то есть посреди общего файла, а строка на стыке слипается, если файл не кончается переводом строки. Итоговый файл кладите в другую папку, чтобы при повторном запуске он сам не попал под маску *.txt.
macOS: в zsh, оболочке по умолчанию, числа по значению сравнивает квалификатор (n): команда cat *.txt(n) > all.txt ставит стр2.txt раньше стр10.txt. Метки BOM и стыки при этом остаются такими же, как у обычного cat. В bash такого квалификатора нет.
Windows, командная строка: copy /b *.txt all.txt склеивает файлы байт в байт, с теми же метками BOM посреди текста и слипшимися стыками. Числа в именах по значению не сравниваются.
PowerShell: Get-Content *.txt | Set-Content all.txt читает файлы как текст и записывает их заново в кодировке Set-Content по умолчанию. В Windows PowerShell 5.1 это системная кодовая страница, в PowerShell 7 — UTF-8 без BOM. Кроме того, Windows PowerShell 5.1 читает файлы UTF-8 без BOM как текст в системной кодировке, и кириллица из них превращается в «кракозябры». Указывайте -Encoding явно.
CSV с одним заголовком в Linux: awk 'FNR==1 && NR!=1 {next} {print}' *.csv > all.csv пропускает первую строку каждого файла, кроме первого. Порядок файлов тот же, что у cat: стр10.csv раньше стр2.csv.
Для сотен файлов в разных кодировках, с шапками и подвалами такие команды обрастают циклами и перекодированием. Здесь то же самое делается выбором папки и несколькими настройками.
Пример из жизни: 109 страниц словаря в один файл
Составитель словаря диалектных слов скачал с сайта 109 страниц текстовыми файлами. У каждой страницы одинаковая шапка из 7 строк, а подвал разной длины, от 19 до 22 строк: в нём ссылки на соседние страницы и дата, которая у разных страниц бывает разной. В именах файлов стоят номера, и при посимвольной сортировке порядок страниц сбивается. Раньше он склеивал страницы вручную и вычищал шапки и подвалы автозаменами.
Выбрал папку со страницами и проверил очередь склейки: файлы встали по номерам в именах. Заметил в начале очереди посторонний файл со списком слов и убрал его из папки, чтобы он не попал в общий файл.
В блоке «Перед склейкой убрать у каждого файла» выбрал поиск одинаковых шапки и подвала. Строки с номерами страниц и датой совпадают с другими только после замены цифр, но стоят рядом с точно совпадающими строками подвала, поэтому подвал срезается целиком.
Между файлами оставил «ничего», переводы строк выбрал «Unix (LF)», кодировку результата — UTF-8.
Нажал «Объединить 109 файлов» и скачал общий файл.
Страницы идут подряд и по порядку, без шапок и подвалов, а метки BOM, которые были у каждой страницы, не оказались посреди текста.
Знаете ли вы?
Название команды cat — сокращение от английского concatenate, «сцеплять». Её прямая задача — склеивать файлы, а вывод одного файла на экран — частный случай.
Проводник Windows сортирует имена с числами по значению: «стр2» стоит раньше «стр10». А подстановка *.txt в bash сравнивает числа в именах цифра за цифрой, поэтому в папке файлы видны в одном порядке, а склеиваются в другом.
Метка BOM в UTF-8 — три байта EF BB BF. В Юникоде это символ U+FEFF, «неразрывный пробел нулевой ширины»: посреди текста его не видно, но строка с ним уже не равна такой же строке без него.
Слово «Привет» в UTF-8, открытое как Windows-1251, выглядит как «РџСЂРёРІРµС‚». Кириллическая буква в UTF-8 занимает два байта, и каждый из них читается как отдельный знак.
Склеить файлы: этот инструмент и командная строка
| Способ | Команда | Порядок стр2 и стр10 | Что учесть |
|---|---|---|---|
| Этот инструмент | Выбрать папку и нажать «Объединить» | стр2, затем стр10 | Метка BOM только в начале, стыки не слипаются, разные кодировки сводятся к UTF-8 |
| Linux, bash | cat *.txt > all.txt | стр10 раньше стр2 | Метка BOM каждого файла остаётся посреди текста, стык без перевода строки слипается |
| macOS, zsh | cat *.txt(n) > all.txt | стр2, затем стр10 | Метки BOM и стыки — как у cat в bash |
| Windows, командная строка | copy /b *.txt all.txt | Числа по значению не сравниваются | Байты как есть: те же метки BOM и стыки |
| PowerShell | Get-Content *.txt | Set-Content all.txt | Числа по значению не сравниваются | Файлы записываются заново в кодировке по умолчанию; указывайте -Encoding |
| CSV с одним заголовком, Linux | awk 'FNR==1 && NR!=1 {next} {print}' *.csv > all.csv | стр10 раньше стр2 | Первая строка остаётся только у первого файла |
Кодировка общего файла
| Файлы на входе | «Как у файлов» (по умолчанию) | «UTF-8» |
|---|---|---|
| Все в UTF-8 без BOM | UTF-8, байты частей как есть | UTF-8 без BOM |
| Все в UTF-8, у части файлов есть BOM | UTF-8; метка BOM в начале, если она была у первого файла | UTF-8 без BOM |
| Все в Windows-1251 | Windows-1251, байты частей как есть | UTF-8 без BOM |
| Все в UTF-16LE или все в UTF-16BE | Та же UTF-16, одна метка BOM в начале | UTF-8 без BOM |
| Разные, например UTF-8 и Windows-1251 | UTF-8 без BOM и сообщение о разных кодировках | UTF-8 без BOM |
| Двоичные файлы и UTF-32 | В общий файл не попадают, отмечены в отчёте | То же |
Файлы не отправляются на сервер сайта
Чтение, срез шапки и подвала и склейка выполняются на вашем устройстве. Файлы не отправляются на сервер сайта, исходные файлы на диске не меняются: вы скачиваете новый общий файл.
Ограничения на число файлов нет. Общий файл собирается в памяти браузера, поэтому при выборе больше 1 ГБ появится предупреждение: на слабом компьютере такой объём лучше склеивать частями.
Как объединить текстовые файлы в один: пошагово
Выберите файлы или папку
Нажмите «Выбрать файлы» или «Выбрать папку» либо перетащите файлы и папки в окно. Служебные файлы систем отбрасываются сами.
Проверьте порядок склейки
Инструмент покажет первые и последние имена в очереди. Числа сравниваются по значению: стр2 раньше стр10. Чтобы поменять порядок, переименуйте файлы.
Выберите разделитель
В поле «Между файлами» оставьте «ничего» или выберите «пустая строка» либо «имя файла отдельной строкой» перед каждой частью.
Срежьте шапку и подвал
Если нужно, выберите срез по числу строк, по строке-метке или поиск одинаковых шапки и подвала. Для CSV отметьте галочку заголовка.
Задайте переводы строк и кодировку
Оставьте «как в файлах» или выберите CRLF либо LF. Кодировку результата оставьте как у файлов или выберите UTF-8.
Обработайте и скачайте
Нажмите «Объединить» (на кнопке — число файлов), затем «Скачать общий файл». Имя берётся от названия папки, иначе — obedinennye-fajly.
Примеры: что получится
Главы книги по номерам
Файлы «глава1.txt» … «глава12.txt». В общем файле главы идут по порядку 1, 2, 3 … 12, а не 1, 10, 11, 12, 2. С разделителем «пустая строка» между главами остаётся по одной пустой строке.
Страницы, скачанные с сайта
У каждой страницы одинаковая шапка с меню и подвал с надписями навигации, списком номеров страниц и датой. В режиме поиска одинаковых шапки и подвала общий файл содержит только текст страниц, подряд и по номерам.
CSV-выгрузки по дням
Папка «продажи» с файлами по дням, у каждого первая строка — названия столбцов. С галочкой «Заголовок CSV оставить только у первого файла» получается продажи.csv с одной строкой заголовка вверху.
Файлы в разных кодировках
Старые заметки в Windows-1251 и новые в UTF-8. Каждый файл читается в своей кодировке, общий файл записывается в UTF-8, и рядом с кнопкой скачивания появляется сообщение, что кодировки были разные.
Логи с нескольких серверов
Файлы app1.log, app2.log и app3.log склеены с разделителем «имя файла отдельной строкой». Перед записями каждого лога стоит строка с его именем, поэтому в общем файле видно, откуда какая запись.
Вопросы об объединении текстовых файлов
Как объединить txt файлы в один?
Сколько файлов можно объединить за раз?
Загружаются ли мои файлы на сервер?
В каком порядке склеиваются файлы?
Как поменять порядок файлов?
Как объединить CSV-файлы, чтобы заголовок был один?
Можно ли вставить имя файла перед каждой частью?
Как убрать одинаковую шапку и подвал у всех файлов?
Почему подвал «Страница 3 из 12» не нашёлся автоматически?
Что будет, если файлы в разных кодировках?
Почему после cat в тексте появляются невидимые символы?
Слипнутся ли строки на стыке файлов?
Можно ли загрузить архив ZIP?
Как привести переводы строк к одному виду?
Что пригодится до и после склейки
Обрезать края у каждого файла без склейки, убрать повторы из общего файла или объединить PDF — в соседних инструментах.
Комментарии (1)
Почту и пароль указывать не нужно · публикуем после проверки, обычно за 1–2 дня · если вам ответят, ответ появится здесь же
Комментарии — мнения посетителей, прошедшие проверку по правилам сайта; порядок определяется отметками «полезно».