패턴과 일치하는 파일의 줄 수 계산 [닫기]

패턴과 일치하는 파일의 줄 수 계산 [닫기]

특정 패턴과 일치하는 파일을 줄 수와 함께 나열하고 싶습니다. 지금까지 나는 원하는 패턴과 일치하는 파일을 나열하는 다음을 시도했습니다.

find 2021.12.*/ -maxdepth 2 -name "myfilepattern.csv" -ls

123456789  32116 -rw-rw-r--   1 user1 user1 32881884 Dec  1 23:59 2021.12.01/myfilepattern.csv
234567891      4 -rw-rw-r--   1 user1 user1      144 Dec  2 00:00 2021.12.02/myfilepattern.csv

각 파일의 줄 수 2021.12.01/myfilepattern.csv2021.12.02/myfilepattern.csv.

이 기둥 배치에 대한 특별한 요구 사항은 없습니다. 시작 부분이나 끝 부분일 수 있습니다.

답변1

-printfAND -exec연산자를 사용하여 wc -l행/행 수를 계산할 수 있습니다 .

find 2021.12.*/ -maxdepth 2 -name "myfilepattern.csv" -printf '%i\t%k\t%M\t%n\t%u\t%g\t%s\t%Tb %Td %TH:%TM\t' -exec wc -l {} \;

행 번호는 마지막 열에서 두 번째가 됩니다.

답변2

아마도 간단한 접근 방식은 각 파일을 호출 wc -l하고 해당 출력을 조건자의 출력과 결합하는 것입니다 -ls. 다음 사용은 이 작업을 수행하며 사용하기 전에 호출하므로 paste출력 은 첫 번째 열에 표시됩니다.wc-lswc

find 2021.12.*/ -maxdepth 2 -name 'myfilepattern.csv' \
    -exec wc -l {} \; \
    -ls |
paste - -

출력에서 파일 경로 이름을 가져오지 않으려면 유틸리티의 명령줄에 파일을 전달하는 대신 wc파일을 로 리디렉션해야 합니다 . in 을 사용하여 이를 수행 wc하려면 쉘을 호출해야 합니다.-execfind

find 2021.12.*/ -maxdepth 2 -name 'myfilepattern.csv' \
    -exec sh -c 'wc -l <"$1"' sh {} \; \
    -ls |
paste - -

출력 끝의 줄 수를 얻으려면 -exec및 주변 내용을 바꾸십시오.-ls-ls

관련 정보