두 서버 간의 명령 출력을 비교하려고 합니다. 와 같은 명령의 출력에서 줄 수를 알고 싶습니다 ls -l
. 그렇게 할 수 있는 방법이 있나요? 지금까지 나는 아무것도 찾지 못했습니다.
답변1
누군가에게는 이것이 기억하기 더 쉬울 수도 있습니다.
ls -l | grep . -c
total 32044
grep과 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