seabeck.pages.dev

Como encontrar arquivos duplicados por conteúdo usando script

Encontrar arquivos duplicados por nome é simples, mas identificar duplicatas com conteúdo idêntico requer uma abordagem mais robusta. Este método utiliza um script Python para calcular hashes de arquivos, garantindo precisão total e automatizando o processo.

Pré-requisitos

Passo 1: Criar o script Python

Crie um arquivo chamado find_duplicates.py com o seguinte conteúdo:

import os
import hashlib
from collections import defaultdict

def calculate_hash(file_path):
    """Calcula o hash SHA-256 do conteúdo do arquivo"""
    hasher = hashlib.sha256()
    with open(file_path, 'rb') as f:
        while chunk := f.read(8192):
            hasher.update(chunk)
    return hasher.hexdigest()

def find_duplicate_files(directory):
    """Encontra arquivos duplicados por conteúdo em um diretório"""
    hashes = defaultdict(list)
    
    for root, _, files in os.walk(directory):
        for filename in files:
            file_path = os.path.join(root, filename)
            try:
                file_hash = calculate_hash(file_path)
                hashes[file_hash].append(file_path)
            except (IOError, OSError):
                continue
    
    duplicates = [paths for paths in hashes.values() if len(paths) > 1]
    return duplicates

if __name__ == "__main__":
    import sys
    if len(sys.argv) != 2:
        print("Uso: python find_duplicates.py <diretório>")
        sys.exit(1)
    
    directory = sys.argv[1]
    duplicates = find_duplicate_files(directory)
    
    if duplicates:
        print(f"Encontrados {len(duplicates)} grupos de arquivos duplicados:")
        for i, group in enumerate(duplicates, 1):
            print(f"\nGrupo {i}:")
            for file_path in group:
                print(f"  - {file_path}")
    else:
        print("Nenhum arquivo duplicado encontrado.")

Passo 2: Executar o script

Abra o terminal, navegue até o diretório onde o script foi salvo e execute:

python find_duplicates.py /caminho/para/diretorio

Substitua /caminho/para/diretorio pelo caminho do diretório que você deseja analisar.

Exemplo Prático

Arquivo Hash SHA-256 Status
/docs/relatorio_final.pdf 9f86d081884c7d659a2feaa0c55ad015 Único
/backup/relatorio_final.pdf 9f86d081884c7d659a2feaa0c55ad015 Duplicado
/temp/imagem.jpg e3b0c44298fc1c149afbf4c8996fb924 Único
/downloads/imagem.jpg e3b0c44298fc1c149afbf4c8996fb924 Duplicado

Conclusão

Com este script, você automatiza a detecção de arquivos duplicados por conteúdo em segundos, eliminando a necessidade de comparação manual e garantindo precisão total através do uso de hashes criptográficos.