사용자에게 폴더 이름을 요청하고 해당 폴더에서 발견된 파일 수를 반환하는 스크립트를 만듭니다. 폴더가 존재하지 않으면 화면에 오류 메시지를 표시합니다.
이 질문의 첫 번째 부분을 살펴보았는데 폴더에 있는 파일 수를 저장하기 위한 변수를 만들어야 한다는 것을 알고 있습니다. 발견된 파일 수를 반환하는 방법에 대해 막혔습니다. 이 문제를 어떻게 해결할 수 있는지에 대한 제안이 있습니까? 나는 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를 빼야 합니다 ..
.