FINDING AND REMOVING DUPLICATE FILES
در دنیای دیجیتال امروز، فایلهای تکراری میتوانند فضای ارزشمندی را اشغال کنند. به همین دلیل، نوشتن کدی که این فایلها را شناسایی و حذف کند، بسیار مهم است. این کد میتواند به زبانهای مختلفی نوشته شود، اما در اینجا یک مثال ساده به زبان Python ارائه میدهیم.
برای شروع، نیاز به کتابخانههایی داریم که به ما کمک کنند. کتابخانههایی مثل `os` و `hashlib` میتوانند بسیار مفید باشند.
کد نمونه
```python
import os
import hashlib
def hash_file(path):
"""محاسبه هش فایل"""
hasher = hashlib.md5() # استفاده از MD5 برای هش
with open(path, 'rb') as file:
while chunk := file.read(8192):
hasher.update(chunk)
return hasher.hexdigest()
def find_duplicates(directory):
"""پیدا کردن فایلهای تکراری"""
hashes = {}
duplicates = []
for dirpath, _, filenames in os.walk(directory):
for filename in filenames:
file_path = os.path.join(dirpath, filename)
file_hash = hash_file(file_path)
if file_hash in hashes:
duplicates.append(file_path)
else:
hashes[file_hash] = file_path
return duplicates
def remove_duplicates(duplicates):
"""حذف فایلهای تکراری"""
for file in duplicates:
try:
os.remove(file)
print(f"حذف شد: {file}")
except Exception as e:
print(f"خطا در حذف {file}: {e}")
# استفاده از کد
directory_to_scan = "/path/to/directory"
duplicates = find_duplicates(directory_to_scan)
if duplicates:
print("فایلهای تکراری پیدا شدند:")
for dup in duplicates:
print(dup)
remove_duplicates(duplicates)
else:
print("فایل تکراری پیدا نشد.")
```
توضیحات کد
در ابتدا، تابع `hash_file` برای محاسبه هش هر فایل استفاده میشود. این تابع فایل را به صورت باینری باز میکند و با استفاده از MD5، هش آن را محاسبه میکند. سپس در تابع `find_duplicates`، با استفاده از `os.walk`، به مرور دایرکتوریها و فایلها پرداخته میشود.
در هر مرحله، هش فایلهای موجود محاسبه و در یک دیکشنری ذخیره میشود. اگر هش تکراری پیدا شود، آن فایل به لیست `duplicates` اضافه میشود. در نهایت، با استفاده از تابع `remove_duplicates`، فایلهای تکراری حذف میشوند.
با این روش، شما میتوانید به سادگی فایلهای تکراری را شناسایی و حذف کنید. این کد میتواند به راحتی گسترش یابد و به نیازهای خاص شما پاسخ دهد.