저는 이 스크립트를 사용하여 기본 폴더에 있는 파일 수를 저장하지만 해당 기본 폴더 내의 하위 폴더도 계산합니다.
nfiles=$(ls -1 /home/userA/mainfolder | wc -l)
폴더가 아닌 파일만 포함하도록 수정하는 방법에 대한 제안이 있습니까?
답변1
이런 용도로 사용하지 마세요 find
.
작동하려면 이식 불가능한 GNU 확장이 필요할 뿐만 아니라 stat()
검색하는 모든 파일도 필요합니다. ls
반면 에 인쇄할 수 없는 내용을 참조하려면 ?를 사용하여 -1
줄별로 현재 디렉터리의 디렉터리 항목을 간단히 나열 할 수 있습니다. -q
물음표( \n
엘라인 포함)/
, 각 디렉토리 목록에 추가됩니다.
이 방법으로 -c
현재 디렉토리에 점이 아닌 파일의 간단한 수에 대해 다음을 수행할 수 있습니다.
ls -1pq | grep -c -v /
전체 프로세스가 find
실제보다 잠재적으로 더 빠를 뿐만 아니라 POSIX 방식으로 수행됩니다.
답변2
대신에분석하다ls
, 당신은 그것을 사용할 수 있습니다 find
:
find . -maxdepth 1 -type f ! -name ".*" | wc -l
.( )로 시작하는 파일을 제외하고 -type f
현재 디렉터리( )에서 모든 파일을 찾고 결과를 전달하여 줄 수를 계산합니다..
! -name ".*"
wc
스크립트에서 변수로 사용하려면:
nfiles=$(find . -maxdepth 1 -type f ! -name ".*" | wc -l)