저는 현재 Linux 컴퓨터를 사용하고 있지 않습니다. 다음 명령을 실행하면 내가 원하는 결과가 나올까요?
ls | grep ".pdf" | wc
답변1
foo.pdfa
아니요, ".pdf"에는 및 등의 의미가 너무 많습니다 bpdf
.
또한 잘못 일치하는 파일이 없더라도 wc
입력의 줄 수, 단어 수, 바이트 수를 출력하는 옵션이 없으므로 관심 있는 숫자보다 두 개 더 많은 숫자를 얻게 됩니다. grep
혼합을 원하면 할 수 있지만 ls | grep -E "\.pdf$" | wc -l
해당 디렉토리에 많은 PDF 파일이 없으면 grep이 필요하지 않습니다. 그렇지 않으면 를 사용할 수 있습니다 ls *.pdf | wc -l
.
나중에 나는 그것을 알아내고 다음과 같이 덧붙였습니다.
또한 grep
계산을 수행할 수 있으므로 grep
혼합된 경우 -c
출력을 파이프하는 대신 grep에 옵션을 추가하거나 wc -l
다음 과 같은 디렉터리 ls | 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
그렇지 않으면 이 스위치를 추가하십시오.