특정 폴더에만 파일 수 저장

특정 폴더에만 파일 수 저장

저는 이 스크립트를 사용하여 기본 폴더에 있는 파일 수를 저장하지만 해당 기본 폴더 내의 하위 폴더도 계산합니다. 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)

관련 정보