폴더에 있는 파일 수를 반환하는 방법에 대한 제안 [중복]

폴더에 있는 파일 수를 반환하는 방법에 대한 제안 [중복]

사용자에게 폴더 이름을 요청하고 해당 폴더에서 발견된 파일 수를 반환하는 스크립트를 만듭니다. 폴더가 존재하지 않으면 화면에 오류 메시지를 표시합니다.

이 질문의 첫 번째 부분을 살펴보았는데 폴더에 있는 파일 수를 저장하기 위한 변수를 만들어야 한다는 것을 알고 있습니다. 발견된 파일 수를 반환하는 방법에 대해 막혔습니다. 이 문제를 어떻게 해결할 수 있는지에 대한 제안이 있습니까? 나는 ls그 명령이 사용될 것이라는 것을 알고 있습니다.

clear
echo -e "Option #11: Acquire the number of files within a particular folder\n\n"
echo -e "Enter in the Folder Name below\n"
read foldername
answer=$(grep $foldername)
if [ "$answer" = "" ]
then
clear
echo -e "\n No Such Folder Exists"
else

답변1

이 문제를 해결하는 방법에는 여러 가지가 있습니다. 첫 번째는 bash배열을 사용하는 것입니다.

shopt -s nullglob
if [[ -d $foldername ]]; then
  files=("$foldername"/*)
  answer="${#files[@]}"
else
  printf '%s does not exist\n' "$foldername"
fi

쉘이 배열을 지원하지 않는 경우 횟수를 반복할 수 있습니다.

count=0
for f in "$foldername"/*; do
  count=$((count + 1))
done

또 다른 옵션은 를 사용하는 것입니다 ls. 이는 가능한 모든 파일 이름을 처리할 수 없기 때문에 가장 신뢰성이 낮은 방법입니다.

count=$(( $(ls -al | wc -l) - 2))

ls -al.include 및 의 출력 으로 2를 빼야 합니다 ...

관련 정보