명령 출력에서 ​​줄 번호를 찾는 방법이 있습니까?

명령 출력에서 ​​줄 번호를 찾는 방법이 있습니까?

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

답변1

어떤 사람들에게는 이것이 기억하기 더 쉬울 수도 있습니다:

ls -l | grep . -c

grep과 wc는 모두 total 32044or 또는 와 같은 보조 라인을 계산합니다 ./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

wcGNU 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 '/\|^$'

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

관련 정보