Объединить текстовые файлы в один
Склеивает сотни TXT, CSV и MD в один файл: порядок по номеру в имени, имя файла перед частью, срез одинаковой шапки и подвала у каждого
Инструмент справился с вашей задачей?
Одно нажатие, без регистрации. По ответам мы решаем, какие инструменты дорабатывать первыми.
Ваш ответ здесь будет первым.
Этот инструмент ещё ждёт первого комментария
Нашли приём, остался вопрос или чего-то не хватило — напишите, пригодится следующим. Без почты и пароля · публикуем после проверки, обычно за 1–2 дня
Как объединить 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–2 дня
Комментарии — мнения посетителей, прошедшие проверку по правилам сайта.