Użyj cat
z przekierowaniem wyjścia. Składnia: cat file [file] [[file] ...] > joined-file
.
Przykład z tylko dwoma plikami (możesz mieć ich znacznie więcej):
$ 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
Jeśli masz „wiele dokumentów”, skorzystaj z globowania powłoki (wzorców):
cat input-files-dir/* > joined-file
Spowoduje to połączenie wszystkich plików w tym katalogu z bieżącym katalogiem (zapobiegając dopasowaniu go do samego pliku wyjściowego). Jest całkowicie niezależny od używania cat
i przekierowywania danych wyjściowych - to po prostu Bash podający wszystkie pliki jako argumenty cat
.
Typy plików
Po prostu sklei (połączy) pliki razem, tak jak w przypadku papieru i taśmy. Nie obchodzi go faktyczny format pliku, który może to obsłużyć. Będzie działał dla plików tekstowych, ale nie dla plików PDF, ODT itp. Cóż, sklei je ze sobą, ale nie jest już prawidłowym plikiem PDF / ODT.
Kolejność dołączenia
Jak zauważył phoibos, globbing powłoki spowoduje alfabetyczny porządek nazw plików. Tak działa globowanie powłoki i powłoki.
Dodatek o input file is output file
błędzie
Gdy wzorzec plików wejściowych pasuje do tego samego pliku co plik wyjściowy, spowoduje to błąd. To funkcja bezpieczeństwa. Przykład: cat *.txt > out.txt
uruchom drugi raz spowoduje to.
Co możesz z tym zrobić:
- Wybierz bardziej szczegółowy wzorzec pasujący do rzeczywistych plików wejściowych, niepasujący do nazwy wyjściowej. Przykład: wzorzec plików wejściowych
*.txt
z plikiem wyjściowym output.out
nie koliduje.
- Pracuj w różnych katalogach. W powyższym przykładzie użyłem osobnego
input-files-dir
katalogu do umieszczenia wszystkich plików i wyprowadzenia ich do bieżącego katalogu roboczego. To uniemożliwia uzyskanie tego błędu.
ls
tylko listy pasujących elementów. Np.ls *.txt
Aby zobaczyć, co jest dopasowane.