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


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.