Назад | Перейти на главную страницу

как сравнивать и перемещать совпадающие строковые файлы в разные места

У меня есть два разных .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 значения в начале, но это может быть ваше дело.

С уважением