명령줄에서 파일을 어떻게 단축할 수 있나요?

명령줄에서 파일을 어떻게 단축할 수 있나요?

약 1GB로 줄이고 싶은 150GB xml 파일이 있습니다. 사용할 수 있는 간단한(bash 또는 유사한) 명령이 있습니까, 아니면 프로그래밍 방식으로 가야 합니까(vi 또는 emacs에서 편집) 큰 철 시스템에서도 악몽입니까)?

(저는 정보 손실에 대해 특별히 걱정하지 않습니다. 이에 대한 소프트웨어를 테스트하고 답변을 얻기 위해 많은 시간을 기다리지 않고 더 짧은 파일을 원합니다. 더 짧은 파일을 사용하면 그렇게 할 수 있습니다.)

답변1

150GB 파일 중 처음 1GB를 자르고 추출한다고 가정합니다.

와 함께 head:

head -c 1G infile > outfile

1024 대신 1000으로 정렬하기 위해 접미사 G를 로 바꿀 수 있습니다 .GB

또는 다음을 사용하여 dd:

dd if=infile of=outfile bs=1M count=1024

또는 Wumpus Q. Wumbley의 답변에서와 같이 dd제자리에서 잘릴 수 있습니다.

답변2

파일을 1GB로 자르려면 다음 truncate명령을 사용하십시오.

truncate -s 1G file.xml

잘린 결과는 유효한 XML 파일이 아닐 가능성이 높지만 이를 이해하신 것으로 알고 있습니다.

GNU 버전에 대한 문서는 truncate다음과 같습니다.여기BSD 버전에 대한 문서는 다음과 같습니다.여기

답변3

가능하다면 truncateJohn1024의 답변과 같이 명령을 사용하겠습니다. 하지만 이는 표준 유닉스 명령이 아니므로 언젠가는 이를 사용하지 못할 수도 있습니다. 이 경우 dd내부 자르기도 수행할 수 있습니다.

dd의 기본 동작은 복사가 끝나는 지점에서 출력 파일을 자르는 것이므로 길이가 0인 입력 파일을 제공하고 원하는 잘림 지점에서 쓰기를 시작하도록 지시하면 됩니다.

dd if=/dev/null of=filename bs=1048576 seek=1024

dd(이것은 multithr3at3d 답변의 복사 및 자르기와 동일하지 않습니다 .)

1048576*1024가 원하는 크기이기 때문에 1048576과 1024를 사용했습니다. bs=1m은 "이식성" 답변이고 클래식에서는 dd접미사 k, b및 만 알고 있기 때문에 피했습니다 w.

답변4

명령 을 사용할 수 있습니다 split.

split -C 1G <filename>

자세한 내용은 이것을 살펴보십시오.스택오버플로 답변

관련 정보