Mam skrypt, który zapisuje kilka plików, ale potrzebuję ich określonego rozmiaru. Zastanawiam się więc, czy istnieje sposób na dodanie określonej liczby bajtów zerowych do pliku przy użyciu standardowych narzędzi wiersza poleceń (np. Przez skopiowanie z /dev/zero
)?
26
oflag=append
działa dla ciebie?dd
myśli polecenie.fallocate
to kolejna możliwość wstawiania dziur w pliku. superuser.com/a/1172904/111432Odpowiedzi:
truncate
jest znacznie szybszy niżdd
. Aby powiększyć plik o 10 bajtów, użyj:źródło
Możesz także tego spróbować
Odczyta to z / dev / zero i dopisze do twojego pliku NUMBER bajtów.
źródło
Poniżej znajduje się przykład dodania 10 MB do pliku przy użyciu tylko dd.
źródło
moim pierwszym przypuszczeniem byłoby:
Zasadniczo to polecenie każe dd „iść” na końcu pliku i dodać niektóre bajty wcześniej odczytane z / dev / zero.
Pozdrowienia,
źródło
lub
i aby łatwiej obliczyć rozmiar:
źródło
Jeśli uzupełniasz plik bajtami zerowymi, domyślam się, że manipulujesz plikiem w
char *
C. W takim przypadku może nie być konieczne wypełnianie pliku bajtami zerowymi, dodając tylko bajt zerowy na końcu pliku, a następnie wypełnienie go losowymi bajtami może wystarczyć. W takim przypadku poniżej program w C byłby bardzo wydajny (do użycia tylko w plikach mniejszych niż drugi parametr, w przeciwnym razie dane zostałyby nadpisane). Może nawet zrobić to, co chcesz (wypełnienie pustymi bajtami), ponieważlseek
definicja funkcji stwierdza, że:W takim przypadku pierwsze połączenie z
lseek
iwrite
może zostać usunięte. Ale testy powinny być wykonane na twoim systemie 1 ...źródło