Використовувати 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щоб побачити, що відповідає.