У меня есть два разных .zip файлы в /tmp/1/
и /tmp/2
Я хочу сравнить эти два разных файла местоположения и переместить соответствующие строковые файлы в /tmp/3
/ tmp / 1
ArchiveFile_aaa.zip
ArchiveFile_bbb.zip
ArchiveFile_mmm.zip
ArchiveFile_ccc.zip
ArchiveFile_zzz.zip
/ tmp / 2
ArchiveFile_aaa.zip
ArchiveFile_bbb.zip
ArchiveFile_ccc.zip
ArchiveFile_ddd.zip
ArchiveFile_eee.zip
ArchiveFile_zzz.zip
ArchiveFile_ttt.zip
ArchiveFile_mmm.zip
ArchiveFile_fff.zip
Я могу получить ту же строку из этих файлов, используя
grep -f / tmp / 1 / tmp / 2
. Но как переместить эти совпадающие строковые файлы в / tmp / 3
Я обратился к python, он должен работать с любой версией Python, однако я тестировал только на Linux. Для Windows вам, возможно, придется перевернуть "/".
Я не пробовал это с злой имена файлов - но с простыми именами.
Использовать
python dir_merge.py DIR1 DIR2 DIR3
Где DIR1 - это каталог с файлами, DIR2 также каталог с файлами. DIR3 может уже существовать, или он будет создан - в этот каталог попадают только общие файлы. Файлы переименовываются в DIR3
import sys
import os
import pprint
'''
usage: Python dir_merge.py Directory1 Directory2 NEW_DIRECTORY
i.e.
python dir_merge.py tmp1 tmp2 tmp3
'''
d1=sys.argv[1]
d2=sys.argv[2]
d3=sys.argv[3]
files_in_d1 = os.listdir(d1)
files_in_d2 = os.listdir(d2)
print("Contents of d1 are...")
pprint.pprint(files_in_d1)
print("Contents of d2 are...")
pprint.pprint(files_in_d2)
common_files = list(set(files_in_d1).intersection(files_in_d2))
print("Common Files are ")
pprint.pprint(common_files)
if len(common_files) > 0:
try:
os.mkdir(d3)
except:
print("Can not create a directory")
for f in common_files:
os.rename(d1+'/'+f,d3+'/'+f)
print("Moved file "+f)
else:
print("Nothing Matches in the 2 directories")
Дайте мне знать, как у вас дела .... Я должен проверить, что вы ввели 3 значения в начале, но это может быть ваше дело.
С уважением