답변:
각 파일에 몇 줄이 있습니까?
wc
원래 단어 수에는을 사용 하지만 줄, 단어, 문자, 바이트 및 가장 긴 줄 길이를 사용할 수 있습니다. 이 -l
옵션은 줄을 세도록 지시합니다.
wc -l <filename>
이것은 라인 수를 출력합니다 :
$ wc -l /dir/file.txt
32724 /dir/file.txt
데이터를 파이프 할 수도 wc
있습니다.
$ cat /dir/file.txt | wc -l
32724
$ curl google.com --silent | wc -l
63
디렉토리에 몇 줄이 있습니까?
시험:
find . -name '*.pl' | xargs wc -l
다른 하나의 라이너 :
( find ./ -name '*.pl' -print0 | xargs -0 cat ) | wc -l
BTW, wc
명령은 줄이 아닌 새 줄 코드를 계산합니다. 파일의 마지막 줄이 줄 바꿈으로 끝나지 않으면 계산되지 않습니다.
당신은 grep -c ^를 사용할 수 있습니다.
#this example prints line count for all found files
total=0
find /path -type f -name "*.php" | while read FILE; do
#you see use grep instead wc ! for properly counting
count=$(grep -c ^ < "$FILE")
echo "$FILE has $count lines"
let total=total+count #in bash, you can convert this for another shell
done
echo TOTAL LINES COUNTED: $total
총 몇 줄
귀하가 올바르게 요청한 것을 이해하지 못했습니다. 예를 들어, 결과는 다음 형식으로 출력되며 각 파일의 줄 수를 보여줍니다.
# wc -l `find /path/to/directory/ -type f`
103 /dir/a.php
378 /dir/b/c.xml
132 /dir/d/e.xml
613 total
또는 파일별로 파일이없는 총 줄 바꿈 문자 수만 다음 명령에 출력하는 것이 유용 할 수 있습니다.
# find /path/to/directory/ -type f -exec wc -l {} \; | awk '{total += $1} END{print total}'
613
가장 중요한 것은, 예를 들어 '사람이 읽을 수있는 형식'으로 필요합니다. 12345678이 아니라 12,345,678
Bash에는 printf 함수가 내장되어 있습니다 :
printf "%0.2f\n" $T
항상 그렇듯이 여기에 언급 된 것과 동일한 결과를 얻는 데 사용할 수있는 여러 가지 방법이 있습니다.
printf
에서 인수 읽지 않는다 stdin
, 오히려 명령 줄에서 (에 배관 비교 echo
에 배관 대를 cat
, cat
읽 stdin
, echo
하지 않습니다). 대신에 printf "$(find ... | xargs ...)"
출력을 인수로 제공하는 데 사용 하십시오 printf
.
대부분의 경우 wc
명령과 와일드 카드를 결합하면 *
충분할 수 있습니다.
모든 파일이 단일 디렉토리에있는 경우 다음을 호출 할 수 있습니다.
wc -l src/*
여러 파일과 디렉토리를 나열 할 수도 있습니다.
wc -l file.txt readme src/* include/*
이 명령은 파일 목록과 줄 수를 보여줍니다.
마지막 줄은 모든 파일의 줄 합계입니다.
디렉토리의 모든 파일을 재귀 적으로 계산하려면 다음을 수행하십시오.
먼저 shopt -s globstar
.bash_profile에 globstar를 추가 하십시오. globstar를 지원하려면 brew install bash
필요한 경우 설치할 수있는 Bash ≥ 4.x가 필요합니다. 로 버전을 확인할 수 있습니다 bash --version
.
그런 다음 다음을 실행하십시오.
wc -l **/*
globstar를 사용하지 않으면이 출력이 올바르지 않습니다.
wc -l **/*
wc: parent_dir/child_dir: read: Is a directory
"
나는 다음에 대한 @malyy 답변을 보강 할 것입니다 (주석을 위해 크게).
총 몇 줄
많은 답변이 wc
명령 줄 파일 옵션을 사용하고 xargs
있습니다. 이것에 대한 문제는 xargs가 다소 작은 플랫폼 의존적 크기로 제한된다는 것입니다.
또한 BSD (macOS)와 GNU (linux / homebrew) 사이에는 차이가 wc
있습니다.
GNU는 인수 ( --files0
) 대신 파일에서 파일 목록을 읽을 수 있기 때문에 이상적입니다 .
mac을 사용 중이고 homebrew가있는 경우 다음을 수행해야합니다.
find . -name "*.pl" -print0 | gwc -l --files0=-
wc 대신 gwc를 주목하십시오 .