Jeśli mam duży plik i muszę go podzielić na 100 megabajtów, zrobię to
split -b 100m myImage.iso
To zwykle daje mi coś takiego
xaa
xab
xac
xad
I żeby je z powrotem połączyć, używałem
cat x* > myImage.iso
Wydaje się, że powinien istnieć bardziej wydajny sposób niż czytanie każdego wiersza kodu w grupie plików cat
i przekierowywanie danych wyjściowych do nowego pliku. Jak sposób na otwarcie dwóch plików, usunięcie EOF
znacznika z pierwszego i połączenie ich - bez konieczności przeglądania całej zawartości.
Windows / DOS ma polecenie kopiowania plików binarnych. Pomoc wspomina, że to polecenie zostało zaprojektowane tak, aby móc łączyć wiele plików. Działa z tą składnią: ( /b
dotyczy trybu binarnego)
copy /b file1 + file2 + file3 outputfile
Czy istnieje coś podobnego lub lepszy sposób łączenia dużych plików w systemie Linux niż cat?
Aktualizacja
Wygląda na cat
to, że jest to właściwy sposób i najlepszy sposób łączenia plików. Cieszę się, że przez cały czas używałem właściwego polecenia :) Dziękujemy wszystkim za opinie.
cat x*
możesz rozważyć rozszerzenie nawiasów klamrowych, cat xa{a..g}
które rozszerza określoną sekwencję do cat
xaa xab xac xad xae xaf xag
cat x*
? Czy nowe ustawienie regionalne nie wpływa również split
tak, że jeśli split
i cat x*
były używane w tym samym systemie będą zawsze działa?
split.c
w GNU Coreutils, przyrostki są zbudowane ze stałej tablicy znaków: static char const *suffix_alphabet = "abcdefghijklmnopqrstuvwxyz";
. Ustawienia regionalne nie będą miały wpływu na przyrostek. (Ale nie sądzę, że jakikolwiek rozsądny lokalny porządek zmieniłby małe litery; nawet EBCDIC zachowuje ich standardową kolejność.)
cat x*
, ponieważ kolejność plików zależy od ustawień regionalnych. Lepiej zacznij pisaćcat x
, niż naciśnij Esc, a następnie*
- zobaczysz rozszerzoną kolejność plików i możesz zmienić kolejność.