디렉터리의 모든 텍스트 파일에서 가장 긴 줄의 길이를 찾습니다.

디렉터리의 모든 텍스트 파일에서 가장 긴 줄의 길이를 찾습니다.

텍스트 파일에서 가장 긴 줄의 길이를 구하는 방법을 알고 있습니다.awk

awk ' { if ( length > L ) { L=length} }END{ print L}' file.txt

하지만 디렉토리에 있는 모든 파일 중 가장 긴 줄의 길이를 구하는 방법은 무엇입니까?

답변1

가장 간단한 해결책은 모든 파일을 연결하고 결과를 스크립트로 파이프하는 것입니다.

cat ./* | awk '{ if ( length > L ) { L=length} }END{ print L}'

여러 파일을 awk에 직접 전달할 수도 있습니다.

awk '{ if ( length > L ) { L=length} }END{ print L}' ./*

물론 파일이 실제로 디렉터리인 경우 일부 경고가 나타날 수 있지만 해롭지는 않습니다. 바이너리는 개념이 없기 때문에 더 큰 문제가 있을 수 있습니다.철사. 좀 더 구체적으로 말하자면 다음과 같이 할 수 있습니다.

 awk '{ if ( length > L ) { L=length} }END{ print L}' ./*.txt

.txt현재 디렉터리의 파일 만 일치합니다 .

그리고 @G-Man이 자신의 의견에서 말했듯 *이 숨겨진 파일(점으로 시작)은 일치하지 않습니다. 이를 원하시면 를 사용하세요 * .*.

답변2

GNU 사용 wc:

cat *.txt|wc -L

-L가장 긴 줄의 길이를 출력하세요.

답변3

각 파일의 최대 길이를 원하면 GNU awk를 사용하십시오.

find . -type f -exec awk -v l=0 '
   length>l {l=length} ENDFILE{print FILENAME ":", l; l=0}' {} +

또는 모든 파일의 최대 길이:

find . -type f -size +1c -exec cat {} + |
  awk -v l=0 'length>l {l=length}; END{print l}'

파일이 개행 문자로 끝난다고 가정합니다. 파일이 줄 바꿈으로 끝나지 않으면 구분되지 않은 마지막 줄이 다음 파일의 첫 번째 줄과 병합되어 결과가 무효화될 수 있습니다.

-size +1c빈 또는 한 문자 텍스트 파일에는 각각 0줄과 1개의 빈 줄이 있으므로 가장 긴 줄이 없기 때문에 최적화입니다.

답변4

또한 여러 파일을 처리할 수 있는 GNU wc(coreutils 8.4)를 사용하세요.

wc -L *.txt
  • 각 개별 파일의 길이를 나열하십시오.
  • 모든 파일의 최대 길이를 제공합니다.

관련 정보