특정 패턴과 일치하는 파일을 줄 수와 함께 나열하고 싶습니다. 지금까지 나는 원하는 패턴과 일치하는 파일을 나열하는 다음을 시도했습니다.
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.csv
와 2021.12.02/myfilepattern.csv
.
이 기둥 배치에 대한 특별한 요구 사항은 없습니다. 시작 부분이나 끝 부분일 수 있습니다.
답변1
-printf
AND -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
-ls
wc
find 2021.12.*/ -maxdepth 2 -name 'myfilepattern.csv' \
-exec wc -l {} \; \
-ls |
paste - -
출력에서 파일 경로 이름을 가져오지 않으려면 유틸리티의 명령줄에 파일을 전달하는 대신 wc
파일을 로 리디렉션해야 합니다 . in 을 사용하여 이를 수행 wc
하려면 쉘을 호출해야 합니다.-exec
find
find 2021.12.*/ -maxdepth 2 -name 'myfilepattern.csv' \
-exec sh -c 'wc -l <"$1"' sh {} \; \
-ls |
paste - -
출력 끝의 줄 수를 얻으려면 -exec
및 주변 내용을 바꾸십시오.-ls
-ls