Công cụ Linux để tìm các tập tin trùng lặp?


13

Tôi có một tập hợp các tệp văn bản lớn và đang phát triển, tất cả đều khá nhỏ (dưới 100 byte). Tôi muốn khác nhau từng cặp tệp có thể và lưu ý đó là trùng lặp. Tôi có thể viết một tập lệnh Python để làm điều này, nhưng tôi tự hỏi liệu có một công cụ dòng lệnh Linux hiện có (hoặc có lẽ là một sự kết hợp đơn giản của các công cụ) sẽ làm điều này không?

Cập nhật (để phản hồi bình luận của mfinni ): Các tệp đều nằm trong một thư mục, vì vậy tất cả chúng đều có tên tệp khác nhau. (Nhưng tất cả chúng đều có một phần mở rộng tên tệp chung, giúp dễ dàng chọn tất cả chúng bằng ký tự đại diện.)


Tôi cho rằng tên tệp không trùng lặp, chỉ có nội dung?
mfinni

pixelbeat.org/fslint nếu bạn đang tìm kiếm nội dung trên liên kết có thể giúp bạn làm điều đó. :)
Rajat

Câu trả lời:


22

fdupes . Nhưng tôi thường sử dụng kết hợpfind . -type f -exec md5sum '{}' \; | sort | uniq -d -w 36


1
Biến thể này hoạt động với tôi: find . -name "*.csv" | xargs md5sum | sort | uniq -D -w 34 (Tôi đã sử dụng uniq -D và tôi thích xargs hơn để tìm -exec.)
Daryl Spitzer

+1 Tôi không biết về fdupes, công cụ đó có vẻ rất hữu ích.
Zoredache

3
@Daryl: Sử dụng xargsnhư thế này không hoạt động đối với tên tệp có khoảng trống, -exectuy nhiên sử dụng thì không. Sử dụng -type flàm đối số bổ sung cho find(có thể được sử dụng cùng với -name) hạn chế tìm kiếm đối với các tệp.
fuenfundachtzig

+1 cho fdupes, vì nó cũng nhanh đối với các tệp nhị phân lớn.
Bengt

Trong một số trường hợp hiếm hoi, tôi đã có các xargs không hoạt động (bị sập sau một số lượng tệp được xử lý nhất định) nhưng không tìm thấy -exec đã bị đánh thức mọi lúc. @fuenfundachtzig, người ta có thể sử dụng xargs -0 --d006iter = "\ n" để xử lý các loại tệp này.
ychaouche


3

Bạn gần như chắc chắn không muốn khác biệt từng cặp tệp. Bạn có thể muốn sử dụng một cái gì đó như md5sums để lấy tất cả tổng kiểm tra của tất cả các tệp và đường dẫn vào một số công cụ khác sẽ chỉ báo cáo lại tổng kiểm tra trùng lặp.


2
Bạn có thể giảm số lượng md5sums được tính bằng cách chỉ tính md5sums cho các tệp có kích thước, trong đó có nhiều hơn một tệp có kích thước đó. Vì vậy, đối với tất cả các tệp có kích thước duy nhất tính bằng byte, bạn không cần md5sum, vì chúng không thể là bản sao của bất cứ thứ gì.
tomsv
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.