약 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
답변3
가능하다면 truncate
John1024의 답변과 같이 명령을 사용하겠습니다. 하지만 이는 표준 유닉스 명령이 아니므로 언젠가는 이를 사용하지 못할 수도 있습니다. 이 경우 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
.