~/bin/count_files.sh
#!/bin/sh
# 천 단위 구분자 추가 함수
format_number() {
printf "%s" "$1" | sed ':a;s/\B[0-9]\{3\}\>/,&/;ta'
}
print_folder_structure() {
folder="$1"
base_folder="$2"
shift 2
extensions="$@"
relative_path="${folder#$base_folder}"
relative_path="${relative_path#/}"
depth=$(echo "$relative_path" | awk -F'/' '{print NF-1}')
# 파일 수 계산
total_count=0
for ext in $extensions; do
count=$(find "$folder" -type f -name "*.$ext" | wc -l)
total_count=$((total_count + count))
done
# 천 단위 구분자 추가
formatted_count=$(format_number $total_count)
# 들여쓰기와 폴더 정보 출력
if [ -z "$relative_path" ]; then
printf "|── %s" "$(basename "$folder")"
else
printf "%*s|── %s" $((depth * 4)) "" "$relative_path"
fi
# 확장자와 파일 수 출력
printf " (%s: %s)\n" "$(echo $extensions | sed 's/ /\//g')" "$formatted_count"
# 하위 폴더 처리
find "$folder" -mindepth 1 -maxdepth 1 -type d | sort | while IFS= read -r subfolder; do
print_folder_structure "$subfolder" "$base_folder" $extensions
done
}
# 인자 확인
if [ $# -lt 2 ]; then
echo "Usage: $0 <folder_path> <file_extension1> [file_extension2 ...]"
exit 1
fi
folder_path="$1"
shift
# 메인 함수 호출
print_folder_structure "$folder_path" "$folder_path" "$@"
Usage: /home/fssv3/bin/count_files.sh <폴더 경로> <확장자1> <확장자2> <확장자3>