Перезапись середины файла от блочного устройства *без* усечение файла?

У меня есть Linux (Kubuntu) система с большим (~20Gb) файлом, с которым я хотел бы смешать. А именно, я хочу скопировать все содержание другого большого файла (~12Gb) к середине этого файла и сохранить биты файла, которые не перезаписываются.

Это - то, что я хочу произойти с текстом между каналами, представляющими содержание файла:

Прежде:

outfile: |abcdefghijklmnopqrstuvwxyz|
infile:  |123456789|

После:

outfile: |abcdef123456789pqrstuvwxyz|
(infile is here ^^^^^^^^^)

Я попробовал это:

dd if=infile of=outfile seek=162

(162 количество секторов, которыми я хочу сместить в outfile),

Но это - то, что произошло:

outfile: |abcdef123456789|
(missing part of outfile ^)

Что лучший способ состоит в том, чтобы сделать это?

2
задан 15.01.2010, 22:30

1 ответ

Необходимо указать conv=notrunc к dd. Из страницы справочника

Любой регулярный выходной файл является усеченным, если notrunc значение преобразования не указано. Если начальная часть выходного файла ослеплена мимо (см. oseek операнд), выходной файл является trun-cated в той точке.

5
ответ дан 08.12.2019, 05:58

Теги

Похожие вопросы