파일의 시작 부분과 끝 부분에 휴지통(이진 머리글 및 바닥글)이 있는 파일이 있습니다. 이 바이트를 핵으로 만드는 방법을 알고 싶습니다. 예를 들어 처음부터 25바이트를 가정해보자. 그리고 끝에서 2바이트입니다.
truncate와 dd를 사용할 수 있다는 것을 알고 있지만 truncate는 스트림에서 작동하지 않으며 하드 파일에서 두 개의 명령을 실행하는 것이 다소 어색해 보입니다. truncate
파일의 크기를 알고 파일 을 dd
. 아니면 더 좋은 방법이 있다면?
답변1
답변2
dd단일 명령으로 두 가지를 모두 수행합니다. 블록 크기를 1바이트로 설정하고 첫 번째 25바이트를 건너뛰고 파일 크기에서 건너뛰기 및 끝 바이트를 뺀 값으로 계산합니다.
100 byte file
file.img
dd if=./file.img of=./trimed_file.img bs=1 skip=25 count=73
숫자가 0부터 계산될 수 있으므로 다시 확인하세요.
답변3
ksh93 사용:
{ head -c "$n"; } < file <#((n = EOF - 25 - 2 , 25))
또는 내부에서 수행하려면 다음을 수행하십시오.
{ head -c "$n"; } < file <#((n = EOF - 25 - 2 , 25)) 1<>; file
/opt/ast/bin
당신이 당신보다 앞서 있다면 $PATH
, 당신은 head
내장을 얻게 될 것입니다.
<#((...))
운영자 입니다lseek()
. 는 파일의 길이인...
산술 표현식으로 해석됩니다 .EOF
따라서 위에서는 표시할 부분의 길이를 할당$n
하고 파일 내에서 25바이트를 검색합니다.<>;
명령이 성공하면 열기 읽기+쓰기 모드 및 자르기 리디렉션 연산자입니다.