Tôi sử dụng tập lệnh bao bọc python
để hợp nhất các tập tin (xem bên dưới). Đây là một phiên bản đơn giản hóa của những gì tôi sử dụng để hợp nhất các thư mục của mình ~/.vim
và như vậy.
Nó nên hoạt động trong Python 2 và 3; nhưng có lẽ không phải trong các phiên bản Python cũ như được vận chuyển với CentOS và một số bản phát hành khác.
Xin lưu ý rằng một số kiểm tra (như kiểm tra cho các tệp nhị phân hoặc nếu các tệp giống nhau) không nhanh lắm (nó đọc toàn bộ tệp); bạn có thể loại bỏ chúng nếu bạn muốn.
Nó cũng không báo cáo nếu a chỉ xuất hiện trong một trong các thư mục ...
#!/usr/bin/env python
from __future__ import print_function
import hashlib, os, subprocess, sys
if len(sys.argv) < 3:
print('Usage: {} dir1 dir2'.format(sys.argv[0]))
sys.exit(1)
dir1 = os.path.realpath(sys.argv[1])
dir2 = os.path.realpath(sys.argv[2])
for root, dirs, files in os.walk(dir1):
for f in files:
f1 = '{}/{}'.format(root, f)
f2 = f1.replace(dir1, dir2, 1)
# Don't diff files over 1MiB
if os.stat(f1).st_size > 1048576 or os.stat(f2).st_size > 1048576: continue
# Check if files are the same; in which case a diff is useless
h1 = hashlib.sha256(open(f1, 'rb').read()).hexdigest()
h2 = hashlib.sha256(open(f2, 'rb').read()).hexdigest()
if h1 == h2: continue
# Don't diff binary files
if open(f1, 'rb').read().find(b'\000') >= 0: continue
subprocess.call(['vimdiff', f1, f2])