Для поиска дубликатов файлов с расширением .pdf в двух папках, находящихся на разных дисках, вы можете использовать язык программирования Python и библиотеку `os` для работы с файловой системой. Ниже представлен пример скрипта, который поможет вам найти и вывести пути к дубликатам.
Этот код сканирует обе папки, создает хэш-суммы для файлов и находит дубликаты.
```python
import os
import hashlib
def file_hash(file_path):
"""Возвращает хэш-сумму файла."""
hash_md5 = hashlib.md5()
with open(file_path, "rb") as f:
for chunk in iter(lambda: f.read(4096), b""):
hash_md5.update(chunk)
return hash_md5.hexdigest()
def find_duplicates(dir1, dir2):
"""Находит дубликаты файлов в двух директориях."""
files = {}
# Обрабатываем первую директорию
for root, _, filenames in os.walk(dir1):
for filename in filenames:
if filename.lower().endswith('.pdf'):
file_path = os.path.join(root, filename)
file_hash_value = file_hash(file_path)
if file_hash_value not in files:
files[file_hash_value] = []
files[file_hash_value].append(file_path)
# Проверяем вторую директорию
duplicates = []
for root, _, filenames in os.walk(dir2):
for filename in filenames:
if filename.lower().endswith('.pdf'):
file_path = os.path.join(root, filename)
file_hash_value = file_hash(file_path)
if file_hash_value in files:
duplicates.extend(files[file_hash_value])
duplicates.append(file_path)
return duplicates
# Замените пути на ваши директории
dir1 = '/path/to/first/directory'
dir2 = '/path/to/second/directory'
duplicates = find_duplicates(dir1, dir2)
# Выводим пути к дубликатам
for duplicate in duplicates:
print(duplicate)
```
### Пояснения:
1. **file_hash** — функция, которая вычисляет MD5-хэш файла. Хэш-сумма позволяет быстро определить, являются ли два файла идентичными, независимо от их путей и имен.
2. **find_duplicates** — функция, которая проходит по файлам в двух директориях и ищет дубликаты по хэш-сумме.
3. В **duplicates** собираются пути к дубликатам, найденным в обеих директориях.
4. После выполнения скрипта выведутся все найденные дубликаты.
### Предостережение:
- Работа с большими файлами может занять много времени, так как хэш-суммы рассчитываются для каждого файла.
- Обязательно протестируйте код на небольшой выборке данных, чтобы убедиться, что он работает корректно, прежде чем запускать его на больших директориях.