중복된 파일을 삭제하는 스크립트를 작성해봤다.

우분투에서 쉘 스크립트를 만들어서 실행하면 특정 디렉토리 하위의 파일들을 검색해서 중복된 파일이라고 판단하면 삭제한다.

파일 이름이 중복이면 삭제

#!/bin/bash

# 디렉토리 설정
DIR="file/path"

# 파일 이름이 같은 파일을 찾고, 용량이 더 작은 파일을 삭제
find "$DIR" -type f | while read -r file; do
    # 파일 이름만 추출 (디렉토리 경로 제외)
    filename=$(basename "$file")
    
    # 같은 이름을 가진 파일들을 찾음
    find "$DIR" -type f -name "$filename" | while read -r samefile; do
        # 원본 파일과 동일한 파일은 비교하지 않음
        if [ "$file" != "$samefile" ]; then
            size1=$(stat -c%s "$file")
            size2=$(stat -c%s "$samefile")

            if [ $size1 -gt $size2 ]; then
                echo "Deleting smaller file: $samefile"
                rm -v "$samefile"
            elif [ $size1 -lt $size2 ]; then
                echo "Deleting smaller file: $file"
                rm -v "$file"
                # 원본 파일이 삭제되었으므로 현재 파일로 동일 파일 설정
                file="$samefile"
            fi
        fi
    done
done

파일 해쉬(HASH)가 같으면 삭제

#!/bin/bash

# 디렉토리 설정
DIR="/file/path"

# 해시 값을 저장할 임시 파일 생성
tempfile=$(mktemp)

# 모든 파일의 md5 해시 값을 계산하고 임시 파일에 저장
find "$DIR" -type f -exec md5sum {} + > "$tempfile"

# 중복된 파일의 해시 값을 찾고, 첫 번째 파일을 제외한 나머지 파일을 삭제
awk '{print $1}' "$tempfile" | sort | uniq -d | while read hash; do
    grep "^$hash" "$tempfile" | tail -n +2 | awk '{print $2}' | xargs -I{} rm ->
done

# 임시 파일 삭제
rm "$tempfile"

스크립트 실행

위의 스크립트를 duplicated_file_delete.sh 로 저장 후 실행한다.

sudo bash duplicated_file_delete.sh

#중복파일 #중복삭제 #중복파일삭제 #ssh

Author: 모요
댓글

댓글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

*

©2024 MOYO Blog with DAON Consulting Co,LTD.

CONTACT US

We're not around right now. But you can send us an email and we'll get back to you, asap.

보내는 중입니다..

로그인하세요.

계정 내용을 잊으셨나요 ?