Linux

[Linux] 중복 파일을 확인하는 스크립트

IT-PAPA 2023. 9. 22. 06:22
728x90
반응형

때론 운영하다가 중복파일을 추출하는 스크립트입니다.

참고만 하고, 필요한 부분은 보완하도록 하자!

예제1

#!/bin/bash
# 중복된 파일을 확인하는 스크립트

# 검사할 디렉토리를 지정합니다.
directory_to_check="/root/mnt"

# 중복된 파일을 찾을 함수를 정의합니다.
find_duplicate_files() {
    # 모든 파일을 검색하고 파일 크기와 함께 정렬합니다.
    find "$directory_to_check" -type f -exec stat -c "%s %n" {} \; | \
        awk '{if (a[$1]) print $1, $2; else a[$1]=$2}' | \
        sort -n > duplicate_files.txt

    # 중복된 파일 목록을 출력합니다.
    echo "중복된 파일 목록:"
    cat duplicate_files.txt

    # 중복된 파일을 삭제하려면 아래 주석을 해제하세요.
    # echo "중복된 파일을 삭제합니다."
    # while read -r line; do
    #     file_to_delete=$(echo "$line" | awk '{print $2}')
    #     rm "$file_to_delete"
    #     echo "삭제됨: $file_to_delete"
    # done < duplicate_files.txt

    # 중복된 파일 목록 파일을 삭제합니다.
    #rm duplicate_files.txt
}

# 중복된 파일을 찾는 함수를 호출합니다.
find_duplicate_files

# 스크립트를 종료합니다.
exit 0

 

예제2

#!/bin/bash
# 중복된 파일을 찾아 출력하는 스크립트

# 사용법을 출력하는 도움말 함수
usage() {
    echo "사용법: $0 <디렉토리>"
    echo "디렉토리 내에서 중복된 파일을 찾아 출력합니다."
    exit 1
}

# 명령행 인수의 개수를 확인
if [ $# -ne 1 ]; then
    usage
fi

# 인수로 받은 디렉토리가 존재하는지 확인
directory="$1"
if [ ! -d "$directory" ]; then
    echo "오류: 디렉토리 '$directory'를 찾을 수 없습니다."
    exit 1
fi

# 중복된 파일을 찾아 출력
# md5sum을 사용하여 파일의 해시를 계산하고 중복을 찾음
find "$directory" -type f -exec md5sum {} + | sort | uniq -d -w 32 | awk '{print $2}' | while read -r file; do
    echo "중복된 파일: $file"
done
728x90
반응형
LIST