Cách tìm (và xóa) các tệp trùng lặp


125

Tôi có một bộ sưu tập nhạc lớn và có một số bản sao trong đó. Có cách nào để tìm các tập tin trùng lặp. Tối thiểu bằng cách thực hiện một hàm băm và xem hai tệp có cùng một hàm băm không.

Điểm thưởng cho việc tìm các tệp có cùng tên ngoài phần mở rộng - Tôi nghĩ rằng tôi có một số bài hát có cả phiên bản định dạng mp3 và ogg.

Tôi rất vui khi sử dụng dòng lệnh nếu đó là cách dễ nhất.

Câu trả lời:


138

Tôi sử dụng fdupescho việc này. Đây là một chương trình dòng lệnh có thể được cài đặt từ kho lưu trữ với sudo apt install fdupes. Bạn có thể gọi nó như thế fdupes -r /dir/ect/oryvà nó sẽ in ra một danh sách các bản sao. fdupes cũng có một Trang chủ đơn giản và một bài viết Wikipedia , liệt kê một số chương trình khác.


7
Nó cũng có tùy chọn "-d" cho phép bạn chọn bản sao nào bạn muốn giữ và xóa những bản khác (hoặc bạn có thể giữ tất cả chúng nếu bạn muốn).
Matthew Crumley

Làm cách nào tôi có thể sử dụng tùy chọn -d để khắc phục sự cố của mình tại đây
John McKean Pruitt

Có thể cho fdupes liệt kê các thư mục trùng lặp thay vì các tệp trùng lặp?
Anderson Green

2
Bạn có thể giải thích chi tiết hơn về cách xóa tất cả các bản sao (chỉ để lại một bản sao duy nhất cho mỗi tệp) trong cây thư mục đệ quy không? Tôi muốn làm điều này tự động, nghĩa là, không phải chỉ định mỗi lần giữ tập tin nào. Nó chỉ nên chọn một trong các bản sao.
vẫy gọi

5
fdupes -r . -d -Nnên lưu bản sao đầu tiên và xóa bản sao. Tôi vừa xóa thành công một thư mục bằng cách sử dụng fdupes . -d -Nkhông đệ quy
Simon B

61

FSlint có GUI và một số tính năng khác. Giải thích về thuật toán kiểm tra trùng lặp từ Câu hỏi thường gặp của họ:

1. exclude files with unique lengths
2. handle files that are hardlinked to each other
3. exclude files with unique md5(first_4k(file))
4. exclude files with unique md5(whole file)
5. exclude files with unique sha1(whole file) (in case of md5 collisions).

xì hơi Cài đặt fslint


12
Cảm ơn. Lưu ý rằng tên lệnh là "fslint-gui" và các công cụ dòng lệnh không có trong $ PATH theo mặc định - chúng nằm trong / usr / share / fslint / fslint. Tôi đã bối rối khi tôi không nhận được sự giúp đỡ về gói đó là gì khi chỉ chạy fslint (thông qua / usr / lib / lệnh không tìm thấy).
nealmcb

chính xác những gì cần thiết
Tebe

1
@nealmcb Nếu sử dụng sudo apt-get install fslint, cài đặt hiện tại được đưa fslint-guivào đường dẫn và vì vậy tôi có thể chạy nó từ bất cứ đâu chỉ bằng cách gõ fslint-gui. Bạn có thể tìm thấy nơi fslint-guisống bằng cách gõ which fslint-gui(nó trông giống như một tập lệnh Python).
user29020

55

Danh sách programs/scripts/bash-solutions, có thể tìm thấy các bản sao và chạy theo nix:

  1. dupedit : So sánh nhiều tệp cùng một lúc mà không kiểm tra. Tránh so sánh các tệp với chính chúng khi nhiều đường dẫn trỏ đến cùng một tệp.
  2. dupmerge : chạy trên nhiều nền tảng khác nhau (Win32 / 64 với Cygwin, * nix, Linux, v.v.)
  3. dupseek : Perl với thuật toán được tối ưu hóa để giảm số lần đọc.
  4. fdf : Perl / c dựa và chạy trên hầu hết các nền tảng (Win32, * nix và có thể là các nền tảng khác). Sử dụng MD5, SHA1 và các thuật toán tổng kiểm tra khác
  5. freedups : shell script, tìm kiếm thông qua các thư mục bạn chỉ định. Khi tìm thấy hai tệp giống nhau, nó khó liên kết chúng lại với nhau. Bây giờ hai hoặc nhiều tệp vẫn tồn tại trong các thư mục tương ứng của chúng, nhưng chỉ có một bản sao của dữ liệu được lưu trữ trên đĩa; cả hai mục thư mục đều trỏ đến cùng một khối dữ liệu.
  6. fslint : có giao diện dòng lệnh và GUI.
  7. liten : Công cụ dòng lệnh trùng lặp Python thuần túy và thư viện, sử dụng tổng kiểm md5 và thuật toán so sánh byte mới. (Linux, Mac OS X, * nix, Windows)
  8. liten2 : Viết lại Liten ban đầu, vẫn là công cụ dòng lệnh nhưng với chế độ tương tác nhanh hơn bằng cách sử dụng tổng kiểm tra SHA-1 (Linux, Mac OS X, * nix)
  9. rdfind : Một trong số ít xếp hạng trùng lặp dựa trên thứ tự của các tham số đầu vào (thư mục cần quét) để không xóa trong các nguồn "gốc / nổi tiếng" (nếu có nhiều thư mục). Sử dụng MD5 hoặc SHA1.
  10. rmlint : Công cụ tìm nhanh với giao diện dòng lệnh và nhiều tùy chọn để tìm các lint khác nữa (sử dụng MD5)
  11. ua : Công cụ dòng lệnh Unix / Linux, được thiết kế để hoạt động với find (và tương tự).
  12. findrepe : công cụ dòng lệnh miễn phí dựa trên Java được thiết kế để tìm kiếm hiệu quả các tệp trùng lặp, nó có thể tìm kiếm trong các tệp nén và tệp. (GNU / Linux, Mac OS X, * nix, Windows)
  13. fdupe : một kịch bản nhỏ được viết bằng Perl. Làm công việc của nó nhanh và hiệu quả. 1
  14. ssdeep : xác định các tệp gần như giống hệt nhau bằng cách sử dụng Bối cảnh kích hoạt Piecewise

4
Có ai trong số các chương trình này có thể tìm thấy các thư mục trùng lặp (không chỉ các tệp trùng lặp không?)
Anderson Green

3
@AndersonGreen rmlintcó thể tìm thấy các thư mục trùng lặp. rmlint -T dd
oligofren

đối với Ubuntu, một cách khác là mở Tệp, tìm kiếm (control-f) cho một tiện ích mở rộng nhất định (ví dụ: .mp3), sau đó sắp xếp theo tên tệp; điều này sẽ cho phép xóa các bản sao bằng tay và đồng thời hiển thị vị trí của các bản sao.
axd

6

Nếu tác vụ sao chép của bạn có liên quan đến âm nhạc, trước tiên hãy chạy ứng dụng picard để xác định và gắn thẻ chính xác nhạc của bạn (để bạn tìm thấy các tệp .mp3 / .ogg trùng lặp ngay cả khi tên của chúng không chính xác). Lưu ý rằng picard cũng có sẵn dưới dạng gói Ubuntu.

Điều đó được thực hiện, dựa trên musicip_puidthẻ bạn có thể dễ dàng tìm thấy tất cả các bài hát trùng lặp của mình.


4

Một kịch bản khác thực hiện công việc này là rmdupe . Từ trang của tác giả:

rmdupe sử dụng các lệnh linux tiêu chuẩn để tìm kiếm trong các thư mục được chỉ định cho các tệp trùng lặp, bất kể tên tệp hoặc phần mở rộng. Trước khi các ứng cử viên trùng lặp được loại bỏ, họ được so sánh từng byte. rmdupe cũng có thể kiểm tra các bản sao đối với một hoặc nhiều thư mục tham chiếu, có thể xóa các tệp rác thay vì xóa chúng, cho phép thực hiện lệnh xóa tùy chỉnh và có thể giới hạn tìm kiếm của nó đối với các tệp có kích thước được chỉ định. rmdupe bao gồm một chế độ mô phỏng báo cáo những gì sẽ được thực hiện cho một lệnh đã cho mà không thực sự xóa bất kỳ tệp nào.


3

Bạn đã thử chưa

finddup

hoặc là

finddup -l

Tôi đoán nó hoạt động tốt.


2

Đối với nhận dạng và xóa trùng lặp liên quan đến Âm nhạc, Picard và Jaikoz, bởi http://musicbrainz.org/ là giải pháp tốt nhất. Jaikoz Tôi tin rằng tự động gắn thẻ nhạc của bạn dựa trên dữ liệu của tệp bài hát. Bạn thậm chí không cần tên bài hát cho bài hát đó để xác định bài hát và gán tất cả dữ liệu meta cho bài hát đó. Mặc dù phiên bản miễn phí chỉ có thể gắn thẻ một số lượng bài hát giới hạn trong một lần chạy, nhưng bạn có thể chạy nó bao nhiêu lần tùy ý.


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.