도와주세요. 저는 학생이고 연습하고 배우려고 온라인에서 이 질문을 찾았습니다.
나는 주어진 디렉토리의 모든 항목을 에코하는 프로그램을 만들고 있습니다. 디렉토리의 항목이 파일인 경우 크기가 표시됩니다. 항목이 디렉터리인 경우 해당 디렉터리에 몇 개의 항목이 있는지 표시됩니다. 아래 내 프로그램은 특정 디렉토리의 파일을 에코합니다. 내 질문은 파일 크기를 에코하고 디렉터리의 항목 수를 에코하는 방법입니다. 내 프로그램은 다음과 같습니다
감사합니다!
#! /bin/bash
# Files Directory
read -p "Enter a Directory or File: " entry
target="$entry"
let count=0
for f in "$target"/*
do
echo $(basename $f)
let count=count+1
done
echo "Files in the Directory: $count"
exit 0
답변1
학습 중이므로 완전한 스크립트가 아닌 문제와 관련된 몇 가지 지침이 여기에 있습니다.
Linux 시스템에서 파일 크기를 얻는 방법은 여러 가지가 있습니다.stat
유용바이트를 직접 요청할 수 있으므로 좋은 선택입니다.
bytes=$(stat -c %s -- "$f")
또 다른 옵션은화장실 시설:
bytes=$(wc -c < "$f")
파일을 리디렉션하고 싶다는 점에 유의하세요.입력하다 wc
반직관적입니다 wc -c "$f"
. 후자 형식은 파일 이름도 출력하는 반면, 전자(파일 이름을 모르기 때문에)는 바이트 수만 출력하기 때문입니다.
주어진 파일이 일반 파일인지 디렉토리인지 테스트하기 위한 일반적인 테스트는 다음과 같습니다.
if [ -d "$f" ]
then
echo It is a directory
else
echo It is not a directory
fi
디렉터리에 있는 (숨겨지지 않은) 파일 수를 계산하려면 다음과 같은 몇 가지 옵션이 있습니다.
POSIX 지정
set
유틸리티를 사용하십시오.set -- /path/to/dir/*; echo "$#"
배열 사용(bash 태그를 지정했기 때문에):
files=( /path/to/dir/* ) echo "There are ${#files[@]} files in there"
특정 디렉터리에 있는 "파일"(파일 및 디렉터리) 수를 계산합니다. 대부분의 쉘의 기본 동작은 다음과 같습니다.소홀히 하다.bashrc
예를 들어 전역을 확장할 때 도트 파일을 *
실행하거나 bash를 shopt -s dotglob
사용하여 이를 조정할 수 있습니다 .shopt -u dotglob
shopt dotglob