하위 폴더 확장자 탐색 Shell 스크립트

HeungJun Kim·2024년 5월 7일
0

Script

목록 보기
1/5

데이터 셋 jpg/txt 파일 갯수 확인 시 편리함

~/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>

profile
Computer Vision / ADAS / DMS / Face Recognition

0개의 댓글