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.Prostym sposobem na to jest użycie cat:
Jeśli tylko
cat file1 file2
wydasz, zobaczysz oba pliki na standardowym wyjściu. Za pomocą>
przekierowujesz standardowe wyjście do pliku. Będzie to działać również z innymi poleceniami.źródło
Zrób to za pomocą prostej pętli:
>>
dołącza się do pliku.Uwaga: jeśli z jakiegoś powodu musisz ponownie uruchomić polecenie, musisz je usunąć
complete.txt
, w przeciwnym razie zapisujesz plik do siebie, co nie działa.źródło
cat
.cat *.txt
. Pętla for powinna zostać posortowana.for
w Bash, czy gdziekolwiek indziej.Jeśli pliki, które chcesz połączyć wszystkie, kończą się na
.txt
, to uprość:Jeśli katalog zawiera tylko pliki tekstowe, jest to również proste:
(Pamiętaj, że po utworzeniu
combined.txt
, powtórzenie tego spowoduje włączenie go do rozszerzenia*
, co prowadzi do dziwnych zachowań).Jeśli chcesz wybrać niektóre pliki w katalogu, a nie inne, najlepiej, jeśli nazwy plików pozwalają rozróżnić, które chcesz. Jeśli nie, możesz się podoba
find
. Ale wątpię, żebyś posunął się tak daleko.źródło
Skrypt niestandardowego działania Thunar napisany przez Cipricusa również zainspirował mnie do napisania podobnego skryptu Nautilus i pomyślałem, że może być przydatny dla innych osób, które szukają odpowiedzi na te pytania w tym temacie. Oto on:
źródło
Jest to uzupełnienie i odmiana innych odpowiedzi związanych z wdrożeniem tych rozwiązań w działaniach niestandardowych Thunara.
Nie wszystkie z nich są użyteczne w ten sposób, ale niektóre są.
Pomyślałem, że najciekawsze byłoby połączenie wybranych plików z menu kontekstowego Thunara .
Jest to odmiana od tego, co zostało zasugerowane przez Sadi w komentarzu do gertvdijk jest odpowiedź :
Dołączone zostaną tylko wybrane pliki. Ogranicz warunki wyglądu do plików tekstowych.
Specjalne podziękowania dla Sadi, którego komentarz zapewnił mi najbardziej jasne i aktualne rozwiązanie mojego problemu.
Przyjąłem gertvdijk „s odpowiedź za ostateczne. Nie tylko była to okazja do komentarza Sadi, ale wydaje się, że ma ona dodatkową wartość dla innych, zapewniając dobrze uzasadnione i kompletne rozwiązanie (choć nieco powyżej moich umiejętności czytania w CLI).
źródło
Możesz także spróbować wykonać
find
polecenie,Znajduje
.txt
pliki w bieżącym katalogu i wykonujecat
polecenie na każdym założonym pliku. W końcu całe wyjście zostało przekierowane do nazwy plikufile
(utworzonego bezpośrednio w samym nurcie).Wyjaśnienie:
źródło
Możesz także skorzystać z narzędzia online, takiego jak merge-files-online.com
źródło