명령 출력에서 ​​줄 수를 알아내는 방법이 있습니까?

명령 출력에서 ​​줄 수를 알아내는 방법이 있습니까?

두 서버 간의 명령 출력을 비교하려고 합니다. 와 같은 명령의 출력에서 ​​줄 수를 알고 싶습니다 ls -l. 그렇게 할 수 있는 방법이 있나요? 지금까지 나는 아무것도 찾지 못했습니다.

답변1

누군가에게는 이것이 기억하기 더 쉬울 수도 있습니다.

ls -l | grep . -c

total 32044grep과 wc 모두 or 또는 와 같은 보조 라인을 계산합니다 ./dirname:. 특히 재귀 출력에서 ​​이를 방지하려면 ls -lR다음을 시도해 보십시오.

find . -type f | grep . -c

여기서 첫 번째 .는 디렉터리 경로이며 이는 파일만 나열한다는 -type f의미입니다 . find모든 유형(디렉토리, 소켓 등 포함)이 필요한 경우 -type f.

참고: wc -l빈 줄(단지 '\n')은 계산되지만 grep . -c- 계산되지는 않습니다.

답변2

다음을 사용해야 합니다 wc.

$ wc -l .emacs.d/init.el 
73 .emacs.d/init.el

에서 man wc:

NAME
       wc - print newline, word, and byte counts for each file

SYNOPSIS
       wc [OPTION]... [FILE]...
       wc [OPTION]... --files0-from=F
       ....
       -l, --lines
              print the newline counts

wc의 일부이므로 GNU coreutils대부분의 시스템에서 사용할 수 있습니다 Unix-like.

답변3

명령을 wc명령으로 파이프할 수 있습니다.

ls -l | wc -l

답변4

두 서버에서 처리된 파일 수를 비교하려면 다음과 같이 안정적으로 수행할 수 있습니다.

ls -aR1qp ./ | grep -cv '/\|^$'

.dotfiles이는 인쇄할 수 없는 문자를 대체하는 데 필요한 쉘 글로브를 사용하여 현재 디렉토리 아래를 포함하여 디렉토리가 아닌 모든 파일을 한 줄에 하나씩 재귀적으로 나열합니다 . grep상위 디렉토리 목록이나 빈 줄을 필터링합니다 ... */따라서 파일당 한 줄만 있어야 하며 총 개수가 grep사용자에게 반환됩니다. 하위 디렉토리도 포함하려면 다음을 수행하십시오.

ls -aR1qp ./ | grep -cv '^\.\{1,2\}/\|^$'

또는...

ls -AR1q ./ | grep -cv '/\|^$'

최신 버전의 옵션은 POSIX 입니다 -A.ls

관련 정보