선택한 디렉토리의 *.pdf 파일 수를 인쇄하는 명령

선택한 디렉토리의 *.pdf 파일 수를 인쇄하는 명령

저는 현재 Linux 시스템을 사용하고 있지 않습니다. 다음 명령을 실행하면 원하는 결과가 나오나요?

ls | grep ".pdf" | wc

답변1

아니요, ".pdf"는 너무 많이 사용됩니다(예: foo.pdfabpdf.

또한 잘못 일치하는 파일이 없더라도 wc옵션 없이 입력의 줄, 단어 및 바이트 수를 출력하므로 관심 있는 것보다 두 개의 숫자를 더 많이 얻을 수 있습니다. grep혼합을 원할 경우 할 수 있지만 ls | grep -E "\.pdf$" | wc -l해당 디렉토리에 grep이 필요하지 않은 많은 PDF 파일이 없으면 으로 얻을 수 있습니다 ls *.pdf | wc -l.

나중에 이것을 곰곰이 생각하게 되었을 때 추가한 내용은 다음과 같습니다.

또한 grep계산을 수행할 수 있으므로 가 grep혼합되어 있는 경우 출력을 로 파이프하는 대신 grep에 옵션을 추가하거나 : -c라는 디렉터리 를 계산하지 않으려는 경우 .wc -lls | grep -cE "\.pdf$"<something.pdf>ls -l | grep -cE "^-.*\.pdf$"

답변2

당신은 사용해야합니다

ls | grep ".pdf" | wc -l

매개 -l변수는 결과 줄 수만 계산하는 반면 매개변수가 없으면 -l개행, 단어 및 바이트 수와 같은 다른 개수도 계산됩니다. 이렇게 하면 ".pdf" 문자 체인이 포함된 파일 이름(및 폴더도 포함)이 계산됩니다.

로 끝나는 파일만 계산하려면 .pdf다음을 사용하는 것이 좋습니다 find.

find . -type f -name "*.pdf" | wc -l

답변3

쉘은 필터링을 수행할 수 있어야 합니다.

ls *.pdf | wc -l

또는 파일 이름의 끝부분이 일치하는지 확인해야 합니다.

ls | grep "*\.pdf$" | wc -l

(달러 기호에 주목하세요).

참고: 둘 다 일치합니다.디렉토리".pdf"로 끝나는 경우.

참고 2: 출력을 파이프하자마자 ls옵션을 제공한 것처럼 작동해야 합니다 . -1그렇지 않으면 이 스위치를 추가하십시오.

관련 정보