답변:
로하지는 split
않지만 나중에 쉽게 이름을 바꾸거나 다음에서 수행 할 수 있습니다 awk
.
awk '{filename = "wrd." int((NR-1)/10000) ".txt"; print >> filename}' inputfile
당시에는 사용할 수 없었지만 최신 버전 ( ≥ 8.16
) gnu split
에서는 --additional-suffix
스위치를 사용 하여 결과 확장을 제어 할 수 있습니다 . 보낸 사람 man split
:
--additional-suffix=SUFFIX
append an additional SUFFIX to file names.
따라서 해당 옵션을 사용할 때 :
split -dl 10000 --additional-suffix=.txt words wrd
결과 조각은 다음으로 자동 종료됩니다 .txt
.
wrd00.txt
wrd01.txt
.........
gnu split
일부 와 관련 이 gnu coreutils
있습니다. 당신이 coreutils
통해 설치하는 경우에도 OSX에서 사용할 수 homebrew
있지만 기본적으로 OSX에서 gnu
유틸리티는 g
이름 앞에 (예 : gstat
대신 stat
) 접두어를 붙여서 다음과 같이 호출 gsplit
하거나 원하는 경우 여기에 따라 PATH를 변경 하십시오 . split
OSX 를 통해 사용하기 위해 split
). HTH.
gsplit
숫자 접미사 (-d)가 작동하도록하는 데 사용하십시오.
이러한 작업은 셸로 가장 잘 관리됩니다. split을 사용한 다음 간단한 루프를 작성하여 파일 이름을 바꿉니다. 예 :
for file in wrd.*
do
mv "$file" "$file.txt"
done
wrd.01, wrd.02 등의 파일 이름을 변경하여 모두 .txt 확장자를 갖습니다.
split+mv
콤보는 1 천만 줄 입력 파일 (75MB)에서 (약 3 초 대 18 초) 보다 6 배 이상 빠릅니다 ... 각 줄의 텍스트는 자체 줄 번호였습니다 ... "명백한":)awk
split + mv
이다 (75) 보다 배 빠른 awk
있을 때 : 100 배 이상 , 파일 split + mv
인 1.5 배보다 더 빨리 awk
. 그래서 나 에게이 split + mv
방법은 승리합니다. 그것은 양심과 같으며 (아마도 더 그렇습니다)보다 빠릅니다 awk
.
for file in wrd.*; do mv "$file" "$file.txt"; done
:)