Використовувати 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-файлів і т.д.
Порядок вступу
Як зазначав phoibos, обшивка оболонки призведе до алфавітного порядку імен файлів. Так працює Bash and shell globing.
Додаток про input file is output file
помилку
Коли шаблон вхідних файлів відповідає тому самому файлу, що і вихідний, це призведе до помилки. Це функція безпеки. Приклад: cat *.txt > out.txt
запустити другий раз це спричинить.
Що ви можете з цим зробити:
- Виберіть більш конкретний шаблон, щоб відповідати фактичним вхідним файлам, не збігаючись з назвою виводу. Приклад: шаблон вхідних файлів
*.txt
із вихідним файлом output.out
не стикається.
- Робота в різних довідниках. У наведеному вище прикладі я використовував окремий
input-files-dir
каталог для розміщення всіх файлів і виведення в поточну робочу директорію. Це робить неможливим отримати цю помилку.
ls
лише список списків. Наприклад,ls *.txt
щоб побачити, що відповідає.