Используйте cat
с перенаправлением вывода. Синтаксис: cat file [file] [[file] ...] > joined-file
.
Пример только с двумя файлами (вы можете иметь гораздо больше):
$ echo "some text in a file" > file1
$ echo "another file with some text" > file2
$ cat file1 file2 > mergedfiles
$ cat mergedfiles
some text in a file
another file with some text
Если у вас «много документов», используйте «оболочку» (шаблоны):
cat input-files-dir/* > joined-file
Это объединит все файлы в этом каталоге с текущим каталогом (не давая ему соответствовать самому выходному файлу). Он полностью независим от использования cat
и перенаправления вывода - это просто Bash, предоставляющий все файлы в качестве аргументов cat
.
Типы файлов
Он просто склеит (соединит) файлы вместе, как если бы вы делали это с бумагой и лентой. Его не волнует фактический формат файла, способный справиться с этим. Он будет работать для текстовых файлов, но не для PDF-файлов, ODT и т. Д. Что ж, он склеит их вместе, но больше не является действительным PDF / ODT.
Порядок присоединения
Как указывал Фойбос, глобализация оболочки приведет к алфавитному порядку имен файлов. Так работает Bash и shell.
Приложение об input file is output file
ошибке
Когда шаблон входных файлов совпадает с тем же файлом, что и выходной, это вызовет ошибку. Это функция безопасности. Пример: cat *.txt > out.txt
запуск во второй раз вызовет это.
Что вы можете с этим поделать:
- Выберите более конкретный шаблон, чтобы он соответствовал фактическим входным файлам, но не совпадал с выходным именем. Пример: шаблон входных файлов
*.txt
с выходным файлом output.out
не будет конфликтовать.
- Работа в разных каталогах. В приведенном выше примере я использовал отдельный
input-files-dir
каталог для размещения всех файлов и вывода в текущий рабочий каталог. Это делает невозможным получение этой ошибки.
ls
только список совпадений. Например,ls *.txt
чтобы увидеть, что соответствует.