+1

Tôi đã viết một Script Python để tìm các tập tin trùng lặp và ngừng lãng phí dung lượng lưu trữ

Hãy để tôi vẽ cho bạn một bức tranh:

Bạn đang dọn dẹp nội dung kỹ thuật số của mình và nhận ra mình có ba bản giống hệt nhau của cùng một tập tin:

  • invoice_final.pdf
  • invoice_final_v2.pdf
  • invoice_final_2_REAL_FINAL.pdf

Hoặc tệ hơn… bạn đã tải cùng một tấm meme 17 lần trong vòng 2 năm. Bạn không muốn trở thành một người tích trữ kỹ thuật số, nhưng thư mục của bạn lại nói lên điều ngược lại.

Vì vậy, tôi đã làm điều này: Tôi viết một đoạn script Python đơn giản nhưng mạnh mẽ để tìm và loại bỏ các tập tin trùng lặp — kể cả khi chúng có tên khác nhau.

Và vâng, từ đó tôi ngủ ngon hơn mỗi đêm.

Vấn đề: Bạn không biết mình đang sở hữu gì nữa

Bạn đã sao lưu dữ liệu. Bạn từng sắp xếp chúng (một lần nào đó). Nhưng sau đó: đồng bộ cloud, tải file từ Slack, các bản sao đổi tên, và các bản sao lưu trong cơn hoảng loạn bắt đầu chồng chất.

Đột nhiên:

  • Dung lượng lưu trữ đầy
  • Bạn không tìm thấy thứ mình cần
  • Bạn sợ xoá nhầm vì “biết đâu đó là bản quan trọng”

Giải pháp: Kiểm tra nội dung, không phải tên File

Hãy quên tên file đi.

Bí quyết nằm ở việc kiểm tra hash của tập tin — vân tay kỹ thuật số của nó.

Nếu hai tập tin có cùng hash, chúng hoàn toàn giống nhau.

Dù một tập tin tên là resume.pdf và tập tin kia là copy-of-resume-2022-old.pdf.

Hãy cùng thực hiện nào.

Từng bước: Viết script python để tìm File trùng lặp

Bước 1: Tính hash cho một file

import hashlib

def file_hash(filepath, chunk_size=8192):
    hasher = hashlib.md5()
    with open(filepath, 'rb') as f:
        while chunk := f.read(chunk_size):
            hasher.update(chunk)
    return hasher.hexdigest()

Hàm này đọc file theo từng khối nhỏ và tạo ra giá trị hash. Dùng MD5 là đủ — không phải mã hoá tài liệu mật quốc gia đâu.

Bước 2: Quét một thư mục để tìm file trùng lặp

import os

def find_duplicates(folder):
    hashes = {}
    duplicates = []

    for root, _, files in os.walk(folder):
        for file in files:
            path = os.path.join(root, file)
            try:
                filehash = file_hash(path)
                if filehash in hashes:
                    duplicates.append((path, hashes[filehash]))
                else:
                    hashes[filehash] = path
            except Exception as e:
                print(f"Skipped {path}: {e}")

    return duplicates

Bước 3: Chạy script và hiển thị kết quả

if __name__ == "__main__":
    folder_to_scan = os.path.expanduser("~/Documents")
    dupes = find_duplicates(folder_to_scan)

    if dupes:
        print("Found duplicates:")
        for dup, original in dupes:
            print(f"{dup} == {original}")
    else:
        print("No duplicates found!")

Những gì bạn nhận được

Script này:

  • Chạy được với bất kỳ thư mục nào
  • Tìm các tập tin thật sự giống nhau
  • Bỏ qua tên file, chỉ quan tâm đến nội dung
  • Hiển thị các file đang chiếm dụng không gian lưu trữ hai lần

Bạn còn có thể nâng cấp nó để:

  • Tự động xoá file trùng lặp
  • Ghi log vào tập tin
  • Chuyển các bản trùng lặp vào thư mục ~/Duplicates

Lời kết: Sắp xếp File gọn gàng = Đầu óc minh mẫn

Bạn không cần một app hạng nặng.

Bạn chỉ cần những script nhỏ sửa những điều phiền toái. Giúp bạn lấy lại thời gian và sự tỉnh táo.

Bắt đầu từ việc nhỏ. Giữ cho mọi thứ kỳ lạ.

Python không chỉ để lấy dự báo thời tiết — nó có thể dọn dẹp cuộc sống kỹ thuật số của bạn, từng hash một.


All rights reserved

Bình luận

Đăng nhập để bình luận
Avatar
+1
Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí