Вы можете скопировать их из рекурсивного каталога (включая все подкаталоги), найти расширение и переименовать их в один шаг со сценарием ниже.
Взятый из сценариев, которые я использую, чтобы не перезаписывать файлы при копировании из рекурсивного каталога:
#!/usr/bin/env python3
import os
import shutil
import sys
dr = sys.argv[1]
new_dir = sys.argv[2]
for root, dirs, files in os.walk(dr):
for name in files:
if name.lower().endswith(".mod"): # for your extension
n = 1; name_orig = name
while os.path.exists(new_dir+"/"+name):
name = "duplicate_"+str(n)+"_"+name_orig
n = n+1
newfile = new_dir+"/"+name
shutil.copy(root+"/"+name_orig, newfile)
Скопируйте сценарий в пустой файл, сохраните его как nodupes.py, запустите его с исходными данными (source-) и выведите каталог в качестве аргументов:
python3 /path/to/nodupes.py /path/to/sourcedir /path/to/outputdir
Он переименует аналогичные именованные файлы, такие как:
Конечно, вместо duplicate_, сценарий можно изменить, чтобы использовать что-либо пронумерованное (или просто числа).
Обобщенная версия not , которая ищет только одно расширение, будет:
#!/usr/bin/env python3
import os
import shutil
import sys
dr = sys.argv[1]
new_dir = sys.argv[2]
for root, dirs, files in os.walk(dr):
for name in files:
n = 1; name_orig = name
while os.path.exists(new_dir+"/"+name):
name = "duplicate_"+str(n)+"_"+name_orig
n = n+1
newfile = new_dir+"/"+name
shutil.copy(root+"/"+name_orig, newfile)