cat을 사용하여 "분할" 출력 파일을 볼 수 없습니다. [닫기]

cat을 사용하여 "분할" 출력 파일을 볼 수 없습니다. [닫기]

파일 a.txt에는 다음이 포함됩니다.

1 one
2 two
3 three
4 four
5 five
6 six

split -2 a.txt output_그런 다음 명령: 출력으로 세 개의 새 파일 생성output_aaoutput_aboutput_ac

다음을 입력하면 cat output_aa메시지가 나타납니다: no such file or directory.

하지만 output_aagedit에서 볼 수 있습니다.

왜?

답변1

man split부분적으로는 다음과 같이 말합니다.

고정 크기 INPUT을 PREFIXaa, PREFIXab, ...로 출력합니다.

PREFIX마지막 명령줄 인수는 어디에 있습니까( output_귀하의 경우). 따라서 출력 파일의 이름은 output_aa, output_ab및 로 output_ac각각 두 줄씩 세 부분으로 나뉩니다.

이것은 또한 내가 본 행동입니다.

그래서 읽을 수 없는 이유는 output_a직접 만들지 않으면 존재하지 않기 때문입니다.

단일 문자 접두사만 사용하여 파일 이름을 지정하려는 경우이미 분할을 실행 중이라면 이름을 바꿀 수 있습니다. bash를 가정하면 이것을 사용할 수 있습니다변수 재형성 기능접미사의 첫 번째 문자를 제거합니다. 이로 인해 중복이 발생할 수 있습니다(이 특별한 경우는 아니지만 일반적인 경우일 수 있음).

for f in output*; do echo mv "${f}" "${f%a?}${f##output_?}"; done

대상 이름 표현식의 첫 번째 부분은 파일 이름 끝 a?(문자임) 에서 제거되고 ?두 번째 부분만 처음 output_?(역시 임의 문자)에서 제거되고 나머지는 추가됩니다. ?결과는 접미사의 첫 번째 문자를 제거하는 것입니다.

귀하의 요구 사항이 만족스러우면 삭제하십시오 echo.

재실행을 수락할 수 있는 경우split, GNU coreutils(8.5 이상)에는 접미사의 길이를 지정할 수 있는 split옵션이 있습니다 . --suffix-length적절한 값을 사용하여 명령줄에 다음을 추가하면 됩니다.

split -2 --suffix-length=1 a.txt output_

이는 예상대로 output_a, output_b및 을 제공합니다. output_c감사해요@don_crissti이것을 지적하십시오.

관련 정보