У меня 50 текстовых файлов в одном каталоге.
Есть ли метод командной строки Windows для объединения этих файлов в один файл?
I я использую Windows Vista.
Я не хочу вводить имена всех файлов.
Я не хочу вводить имена всех файлов.
Этого легко избежать. Откройте командную строку в этой папке и введите следующую команду:
copy/b * .txt newfile.txt
Нажмите Enter .
Теперь у вас будут все текстовые файлы в этой папке, упорядоченные по возрастанию даты, объединенные в один файл с именем newfile.txt.
Моя конечная цель — хранить содержимое каждого текстового файла в отдельном столбце листа Excel.
Вот руководство, которое может помочь вам достичь своей «конечной цели»:
Объединить все файлы CSV или TXT в папке на одном листе
7
Чтобы добавить новую строку в конец каждого объединенного файла, используйте type
вместо copy
, как показано ниже:
type * .txt> newfile.txt
4
Предполагая, что вы говорите о добавлении текстовых файлов, copy :
copy file1 + file2 + file3 targetfile
Если у вас много файлов, вы можете зациклить, добавляя по одному файлу за раз.
Для двоичных файлов добавьте параметр ‘/b
‘:
copy/b file1 + file2 + file3 targetfile
Предполагается, что вы знаете, что двоичные файлы, с которыми вы работаете, могут быть добавлены спина к спине; в противном случае вы получите кучу бесполезных данных.
2
Выполните следующую команду в командной строке:
для% f в (* .txt) введите "% f" >> output .txt
3
Следующий файл .bat добавит все файлы * .for, кроме файла с именем XIT.for, в пустой файл с именем MASTER.for
type NUL> MASTER .forFOR %% G IN (* .for) НЕ ЕСЛИ "%% G" == "XIT.for" копировать/A MASTER.for + "%% G" && echo. >> MASTER.for
🙂
3
установить n = 50 для/l% i в (1,1,% n%) do type file% i.txt >> file. txt
Работает как с двоичными, так и с текстовыми файлами и обеспечивает последовательное объединение файлов (1-50).
Протестировано на Win 10 CMD
Как добавить содержимое нескольких файлов в один файл
Я хочу скопируйте содержимое пяти файлов в один файл как есть. Я пробовал делать это, используя cp для каждого файла. Но это перезаписывает содержимое, скопированное из предыдущего файла. Я также пробовал
paste -d " n" 1.txt 0.txt
, и это не сработало.
Я хочу, чтобы мой сценарий добавлял новую строку в конец каждого текстового файла.
например. Файлы 1.txt, 2.txt, 3.txt. Поместите содержимое 1,2,3 в 0.txt
Как мне это сделать?
Вам нужен кот
(сокращение от concatenate) с перенаправлением оболочки (>
) в выходной файл
cat 1.txt 2. txt 3.txt> 0.txt
Другой вариант для тех из вас, кто все еще наткнуться на этот пост, как и я, заключается в использовании find -exec
:
find. -type f -name '* .txt' -exec cat {} + >> output.file
В моем случае мне нужен был более надежный вариант, который просматривал бы несколько подкаталогов поэтому я решил использовать find
. Разбиваем его:
find.
Посмотрите в текущем рабочем каталоге.
-type f
Интересуют только файлы, а не каталоги и т. д.
-name '* .txt '
Сократите набор результатов по имени
-exec cat {} +
Выполнять команду cat для каждого результата. «+» означает, что создан только 1 экземпляр cat
(спасибо @gniourf_gniourf)
>> output.file
Как объясняется в других ответах, добавьте содержимое cat-ed в конец выходного файла.
8
если у вас есть определенный тип вывода, сделайте что-то вроде этого
cat/path/to/files/*.txt >> finalout.txt
1
Если все ваши файлы находятся в одном каталоге, вы можете просто сделать
cat *> 0.txt
Файлы 1.txt, 2.txt, .. перейдут в 0.txt
1
Если все ваши файлы названы одинаково, вы можете просто сделать:
cat * .log >> вывод. журнал
для i в {1..3}; сделать cat "$ i.txt" >> 0.txt; готово
Я нашел эту страницу, потому что мне нужно было объединить 952 файла в один. Я обнаружил, что это работает намного лучше, если у вас много файлов. Это создаст цикл для любого количества чисел, которые вам нужны, и выделит каждое из них, используя >>, чтобы добавить в конец 0.txt.
Изменить:
как указано вверх в комментариях:
cat {1..3} .txt >> 0.txt
или
cat {0..3} .txt >> all.txt
1
Другой вариант — sed
:
sed r 1.txt 2.txt 3.txt> merge.txt
Или …
sed h 1.txt 2.txt 3.txt> merge.txt
Или …
sed -np 1 .txt 2.txt 3.txt> merge.txt # -n здесь обязательно
Или без перенаправления …
sed wmerge.txt 1.txt 2.txt 3.txt
Обратите внимание, что последняя строка также должна быть merge.txt
(не wmerge.txt !). Вы можете использовать w "merge.txt"
, чтобы избежать путаницы с именем файла, и -n
для вывода без вывода сообщений.
Конечно, вы также можете сократить список файлов с помощью подстановочных знаков. Например, в случае нумерованных файлов, как в приведенных выше примерах, вы можете указать диапазон с помощью фигурных скобок следующим образом:
sed -nw "merge.txt" {1. .3} .txt
, если ваши файлы содержат заголовки , и вы хотите удалить их в выходном файле, вы можете использовать:
для f в `ls * .txt`; do sed '2, $! d' $ f >> 0.out; готово
Если исходный файл содержит непечатаемые символов, они будут потеряны при использовании команды cat. Используя ‘cat -v’, непечатаемые символы будут преобразованы в видимые символьные строки, но выходной файл все равно не будет содержать фактических непечатаемых символов в исходном файле. При небольшом количестве файлов альтернативой может быть открытие первого файла в редакторе (например, vim), который обрабатывает непечатаемые символы. Затем переместитесь в конец файла и введите «: r second_file_name». Это потянет второй файл, включая непечатаемые символы. То же самое можно сделать и с дополнительными файлами. Когда все файлы будут прочитаны, введите «: w». Конечным результатом является то, что первый файл теперь будет содержать то, что он делал изначально, плюс содержимое файлов, которые были прочитаны в.
1
Если хотите для добавления содержимого 3 файлов в один файл, тогда следующая команда будет хорошим выбором:
cat file1 file2 file3 | tee -a file4>/dev/null
Он объединит содержимое всех файлов в file4, выбрасывая вывод консоли в /dev/null
.
Все (текстовые) файлы в один
find. | xargs cat> outfile
xargs создает выходные строки поиска. аргументы cat.
find имеет много параметров, например -name ‘* .txt’ или -type.
вы должны проверить их, если хотите использовать это в вашем конвейере
1