포함된 줄 수에 따라 정렬된 파일 목록

포함된 줄 수에 따라 정렬된 파일 목록

파일의 줄 수를 어떻게 나열합니까 /group/book/four/word(포함된 ​​줄 수에 따라 정렬)?

ls -l명령은 파일을 나열하지만 정렬하지는 않습니다.

답변1

다음과 같은 명령을 사용해야 합니다.

find /group/book/four/word/ -type f -exec wc -l {} + | sort -rn
  • find: 원하는 경로에서 파일을 검색합니다. 재귀적이기를 원하지 않고 구현에서 이를 지원하는 경우 옵션 앞에 추가 find해야 합니다 .-maxdepth 1-exec
  • execwc -l: 각 파일에 대해 실행될 명령을 알려줍니다 .
  • sort -rn: 결과를 숫자에 따라 역순으로 정렬합니다. 큰 것부터 낮은 것까지.

(파일 이름에 개행 문자가 포함되어 있지 않다고 가정).

답변2

비재귀적

재귀가 필요하지 않은 경우 아마도 가장 간단한 버전일 것입니다.

wc -l /group/book/four/word/*|sort -n

wc-l각(숨겨진) *파일 의 줄 수를 계산하고 (옵션) 결과를 숫자로 정렬 /group/book/four/word/합니다 sort(파이프를 통해 |)(옵션 -n).

재귀

grep -rlc앞서 언급한 이 답변에 대해 누군가가 이를 억제하기 위해 댓글을 달았습니다 . grep특히 재귀가 필요한 경우에는 실제로 좋은 선택입니다.

grep -rc '^' /group/book/four/word/|tr ':' ' '|sort -n -k2

( )(즉, 줄의 시작)와 일치하는 디렉터리의 -c(옵션) 줄은 반복적으로 평가됩니다. 그런 다음 콜론을 공백으로 바꿔야 합니다(예: , 를 사용하여 두 번째 열(옵션)에서 숫자(옵션)를 정렬하려는 경우)-rgrep'^'/group/book/four/word/trsort-n-k2

고쳐 쓰다:가능한 제한 사항과 실제로 이를 제거하는 방법에 대해서는 Stephane을 참조하세요 tr.

답변3

그리고 zsh:

lines() REPLY=$(wc -l < $REPLY)
print -rC1 /group/book/four/word/*(.no+lines)

우리는 새로운 것을 정의합니다종류이 함수는 lines파일의 줄 수를 반환합니다. 숫자 정렬을 위해 glob 결과가 정렬되는 방식을 정의하는 o+linesglob 한정자를 사용합니다 . n( .일반 파일에 대해서만 검사도 추가했습니다).

.이는 숨겨진 파일( 로 시작하는 파일)을 무시한다는 점을 제외하고는 파일 이름에 어떤 문자가 포함될 수 있는지에 대해 가정하지 않습니다. D필요한 경우 glob 한정자를 추가하세요.

함수를 정의하는 것은 유사한 작업을 자주 수행할 때 lines유용 하지만, 일회성인 경우 모든 작업을 한 번에 수행할 수도 있습니다.

print -rC1 /group/book/four/word/*(.noe['REPLY=$(wc -l < $REPLY)'])

다른 셸에서 다음을 실행하세요.

zsh -c '
  print -rC1 /group/book/four/word/*(.noe['\''REPLY=$(wc -l < $REPLY)'\''])'

또는 정말로 이러한 셸을 사용해야 하는 경우 ksh93/array에 저장하세요.bash

typeset -a array
eval "
  array=(
    $(
      zsh -c '
        () {
          print -r -- "${(qq)@}"
        } /group/book/four/word/*(N.noe['\''REPLY=$(wc -l < $REPLY)'\''])'
    )
  )
"

qq(평가를 안전하게 하려면 여기에서 매개변수 확장 플래그와 함께 적절한 작은따옴표를 사용하십시오 eval.)

답변4

설치를 원하시면fdRust로 작성된 매우 빠른 파일 찾기(설치해야 합니다. 어쨌든 훌륭합니다)

fd --type=file . | xargs wc -l | sort -n

기본적으로 fd파일이 나열되고 xargs에 파일 목록이 전달됩니다 wc(단어 수를 의미하지만 -l을 전달하면 줄 수를 계산함). 그런 다음 마지막으로 가장 작은 것부터 가장 큰 것까지 사용됩니다 sort -n.

관련 정보