기본적으로 1GB의 콘텐츠가 포함된 할당된 파일을 만들고 싶습니다. 그런 다음 일부 명령줄 유틸리티를 사용하여 파일의 일부(예: 처음 4MB)만 덮어쓰고 나머지 파일 내용은 변경하지 않고 그대로 두고 싶습니다. cp와 dd를 확인했지만 그런 것이 없는 것 같습니다. 어쩌면 내가 잘못된 곳을 찾고 있거나 일부 옵션의 의미를 이해하지 못하는 것일 수도 있습니다.
예, 이를 위해 C 프로그램을 생성할 수 있지만 이식성을 선호하는 것은 명령줄 상황을 사용하는 것입니다.
어떤 아이디어가 있나요?
답변1
예 dd
:
$ cat data
insertion goes here: <...>
$ cat insert
ABC 123 XYZ
$ dd if=insert skip=4 count=3 of=data seek=22 bs=1 conv=notrunc
3+0 records in
3+0 records out
3 bytes transferred in 0.001 secs (2918 bytes/sec)
$ cat data
insertion goes here: <123>
여기서 사용하는 명령은 dd
4개의 청크를 입력 파일로 건너뛴 다음 3개의 청크를 읽습니다. 출력 파일에서 22개의 블록을 찾은 후 해당 블록이 출력 파일에 기록됩니다. 출력은 잘리지 않습니다. 블록은 바이트입니다.
답변2
이것은 나에게 효과적입니다.
$ echo aaaaaaaaaa > a
$ echo bbbbbbbbbb > b
$ dd if=a of=b conv=notrunc ibs=1 obs=1 seek=3 count=4
$ cat b
bbbaaaabbb