Sử dụng cat
với chuyển hướng đầu ra. Cú pháp : cat file [file] [[file] ...] > joined-file
.
Ví dụ chỉ với hai tệp (bạn có thể có nhiều tệp khác):
$ 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
Trong trường hợp bạn có "nhiều tài liệu", hãy sử dụng shell globalbing (mẫu):
cat input-files-dir/* > joined-file
Điều này sẽ nối tất cả các tệp trong thư mục đó với thư mục hiện tại (ngăn không cho nó khớp với tệp đầu ra). Nó hoàn toàn độc lập với việc sử dụng cat
và chuyển hướng đầu ra - đó chỉ là Bash cung cấp tất cả các tệp làm đối số cat
.
Loại tập tin
Nó sẽ chỉ dán (nối) các tập tin với nhau như bạn làm với giấy và băng. Nó không quan tâm đến định dạng tệp thực tế có khả năng xử lý này. Nó sẽ hoạt động cho các tệp văn bản, nhưng không phải cho các tệp PDF, ODT, v.v ... Vâng, nó sẽ kết dính chúng lại với nhau, nhưng nó không còn là một tệp PDF / ODT hợp lệ nữa.
Thứ tự tham gia
Như phoibos đã chỉ ra vỏ toàn cầu sẽ dẫn đến thứ tự chữ cái của tên tệp. Đây là cách Bash và shell Globing hoạt động.
Phụ lục về input file is output file
lỗi
Khi mẫu của các tệp đầu vào khớp với cùng một tệp là đầu ra, điều này sẽ gây ra lỗi. Đây là một tính năng an toàn. Ví dụ: cat *.txt > out.txt
chạy lần thứ hai sẽ gây ra điều này.
Những gì bạn có thể làm về nó:
- Chọn một mẫu cụ thể hơn để khớp với các tệp đầu vào thực tế, không khớp với tên đầu ra. Ví dụ: mẫu tệp đầu vào
*.txt
với tệp đầu ra output.out
sẽ không va chạm.
- Làm việc trong các thư mục khác nhau. Trong ví dụ trên tôi đã sử dụng một
input-files-dir
thư mục riêng để đặt tất cả các tệp vào và xuất ra thư mục làm việc hiện tại. Điều này làm cho nó không thể có được lỗi này.
ls
chỉ liệt kê các trận đấu. Ví dụls *.txt
để xem những gì đang được khớp.