Конкатенация нескольких текстовых файлов в единственный файл в Bash

Что является самым быстрым и большая часть прагматического способа объединить весь *.txt файл в каталоге в один файл крупного текста?

В настоящее время я использую окна с cygwin, таким образом, у меня есть доступ к Bash.

Команда оболочки Windows была бы хороша также, но я сомневаюсь, что существует тот.

265
задан codeforester 24 July 2017 в 16:50
поделиться

6 ответов

Это добавляет вывод на All.txt

cat *.txt >> all.txt

Это перезаписи all.txt

cat *.txt > all.txt
480
ответ дан 23 November 2019 в 02:26
поделиться

Просто помните, что все решения, данные до сих пор, оболочка решает порядок, в котором файлы объединены. Для Bash, IIRC, это алфавитный порядок. Если заказ важен, вы должны либо назвать файлы соответствующим образом (01File.txt, 02file.txt, и т. Д.) Или укажите каждый файл в том порядке, который вы хотите, чтобы он объединен.

$ cat file1 file2 file3 file4 file5 file6 > out.txt
130
ответ дан 23 November 2019 в 02:26
поделиться

Команда Windows Shell Тип может сделать это:

type *.txt >outputfile

Тип Тип Команда также записывает имена файлов на STDERR, которые не схватываются > Оператор перенаправления (но появится на консоли).

33
ответ дан 23 November 2019 в 02:26
поделиться

Вы можете использовать Windows Shell Copy в ConcateNate файлы.

C:\> copy *.txt outputfile

Из справки:

для добавления файлов, укажите один файл для назначения, но несколько файлов для источника (с помощью FileLCards или File1 + File2 + File3).

25
ответ дан 23 November 2019 в 02:26
поделиться

Самый прагматичный способ с оболочкой является команда CAT. Другие способы включают,

awk '1' *.txt > all.txt
perl -ne 'print;' *.txt > all.txt
6
ответ дан 23 November 2019 в 02:26
поделиться

Все это противно ....

ls | grep *.txt | while read file; do cat $file >> ./output.txt; done;

Легко.

-4
ответ дан 23 November 2019 в 02:26
поделиться