Командная строка или пакетный cmd для объединения нескольких файлов

У меня 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

Оцените статью
clickpad.ru
Добавить комментарий