Cách so sánh thư mục với tệp nhị phân


7

Tôi muốn so sánh các thư mục với các tập tin nhị phân. Trên thực tế, tôi không quan tâm đến sự khác biệt thực tế giữa các tệp là gì, nhưng để biết liệu có khác biệt không (và các tệp khác nhau). Trước đây tôi đã sử dụng meld, nhưng nó không thể so sánh các tệp nhị phân.

Những công cụ so sánh tập tin như vậy có thể làm điều này?

LƯU Ý: Không thành vấn đề nếu đó là một công cụ đồ họa hoặc chỉ có một dòng lệnh.


Công cụ cần phải có đồ họa như thế meldhay những thứ sẽ thích diffcommlàm?
terdon

@terdon - Không thành vấn đề. Cảm ơn bạn. Tôi mở rộng câu hỏi.
Loom

Câu trả lời:


11

Điều này có thể dễ dàng được thực hiện với diff. Ví dụ:

$ ls -l foo/
total 2132
-rwxr-xr-x 1 terdon terdon 1029624 Nov 18 13:13 bash
-rwxr-xr-x 1 terdon terdon 1029624 Nov 18 13:13 bash2
-rwxr-xr-x 1 terdon terdon  118280 Nov 18 13:13 ls

$ ls -l bar/
total 1124
-rwxr-xr-x 1 terdon terdon 1029624 Nov 18 13:14 bash
-rwxr-xr-x 1 terdon terdon  118280 Nov 18 13:14 ls

$ diff bar/ foo/
Only in foo/: bash2

Trong ví dụ trên, các thư mục foo/bar/chứa các tệp nhị phân và bash2chỉ trong foo/.

Vì vậy, bạn có thể chạy một cái gì đó đơn giản như:

$ diff bar/ foo/ && echo "The directories' contents are identical"

Điều đó sẽ cho bạn thấy các tệp khác nhau, nếu có, hoặc in "Nội dung của các thư mục giống hệt nhau" nếu có. Để so sánh các thư mục con và bất kỳ tệp nào chúng có thể chứa, hãy sử dụng diff -r. Kết hợp nó với -qđể chặn đầu ra cho các tệp văn bản.


5
Bạn có thể so sánh đệ quy với diffquá sử dụng -rchuyển đổi.
slm

4
-qđể vô hiệu hóa đầu ra khác biệt thực tế cho các tập tin văn bản.
vội vàng

1

Bạn có thể so sánh hai tệp bằng cmplệnh

sử dụng:

cmp file1 file2

Nó sẽ cho số byte khác nhau và số dòng


1
cmp không thể làm so sánh đệ quy. OP muốn so sánh các thư mục, không phải các tập tin.
Martin C. Martin
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.