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.