我有两个不同的。压缩文件/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
答案1
我求助于 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 个值 - 但这取决于你。
问候