찾은 파일의 총 줄 수를 계산하는 방법은 무엇입니까?


10

find . -name pattern일부 파일을 찾기 위해 a 를 실행 중이며이 파일의 총 줄 수를 우아하게 얻고 싶습니다.

어떻게하면 되나요?

답변:


9

사용중인 버전이 wc있고 find필요한 옵션을 지원하는 경우 :

find . -name pattern -print0 | wc -l --files0-from=-

파일 당 개수와 총 개수를 제공합니다. 합계 만 원하는 경우 :

find . -name pattern -print0 | wc -l --files0-from=- | tail -n 1

find해당 버전의 다른 옵션은 다음 을 지원합니다.

find . -name pattern -exec cat {} + | wc -l 

2
$ find . -name '*.txt' -exec cat '{}' \; | wc -l

각 파일을 가져 cat와서 wc세트를 통해 라인 카운팅 모드 로 파이프 합니다.

또는 이상한 파일 이름이 안전합니다.

$ find . -name '*.txt' -print0 | xargs -0 cat | wc -l

1

불행히도 :

find . -iname "yourpattern" -exec cat '{}' \; |wc -l

여분의 줄을 삽입합니다. 신뢰할 수있는 라인 수를 얻으려면 다음을 수행해야합니다.

find . -name "yourpattern" -print0 | xargs -0 wc -l

이렇게하면 공간을 올바르게 처리하고 각 파일의 줄 수와 총 줄 수를 더 빠르고 스타일로 얻을 수 있습니다!


1
예 : 시간 찾기. -name " .m"-exec cat '{}'\; | wc -l은 4.878s에서 실행되고 라인 수로 227847을 리턴합니다. 그러나 시간을 찾으십시오. -name " .m"-print0 | xargs -0 wc -l은 0.769s에서 실행되고 적절한 줄 수 126464를 반환합니다.
g24l


-1

테스트되지 않았지만 다음과 같은 것은 어떻습니까?

cat `find . -name "searchterm" -print` | wc -l

글 로빙을 트리거하는 공백이나 문자가 포함 된 경로에는 적합하지 않습니다.
Kamil Maciorowski

-2
wc -l `find -name filename`

효율적으로 작동합니다.


… 경로에 글 로빙을 트리거하는 공백이나 문자가 포함 된 경우.
Kamil Maciorowski

그것이 작동하는 경우에도 그리고,이 라인의 수보고 에서 파일 (요청에 따라) 총을 얻을 수있는 우아한 방법이 아닙니다.
Scott
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.