Làm cách nào để tìm và xóa các bản nhạc trùng lặp?


8

Vấn đề của tôi là vì một số lý do tôi có bản sao của một số bản nhạc. Tuy nhiên chúng không được đặt tên giống hệt nhau. Ví dụ:

Âm nhạc / Prefuse 73 / Một từ bình chữa / 07. Detchibe.mp3

&

Âm nhạc / Prefuse 73 / Một từ bình chữa / 07 - Detchibe.mp3

Lưu ý rằng chúng là các bài hát trùng lặp nhưng 07 * . * & 07 - đang lừa người tìm tệp trùng lặp tìm kiếm dựa trên tên tệp.


2
Bạn đã thử bất kỳ lời đề nghị ở đây ?
jpd

Fdupes có thể chọn ra một trong hai bản sao và xóa nó không? Mặt khác, lệnh fdupes -r chỉ tạo ra một danh sách không đưa tôi đến bất cứ đâu.
John McKean Pruitt

Điều này có trả lời câu hỏi của bạn không? Làm thế nào tôi có thể tìm thấy các bài hát trùng lặp?
karel

Câu trả lời:


2

Bạn có thể sử dụng fdupesnhư câu trả lời cho câu hỏi »Cách tìm và xóa các tệp trùng lặp« được đề xuất. Để tôi lấy một ví dụ:

mkdir -p "Music/Prefuse 73/One Word Extinguisher/"
dd if=/dev/urandom of=Music/Prefuse\ 73/One\ Word\ Extinguisher/07.Detchibe.mp3 bs=1023 count=2048
  2048+0 records in
  2048+0 records out
  2095104 bytes (2.1 MB) copied, 0.379806 s, 5.5 MB/s
cp Music/Prefuse\ 73/One\ Word\ Extinguisher/07.Detchibe.mp3 Music/Prefuse\ 73/One\ Word\ Extinguisher/"07 - Detchibe.mp3"
fdupes -rd .
  [1] ./Music/Prefuse 73/One Word Extinguisher/07.Detchibe.mp3
  [2] ./Music/Prefuse 73/One Word Extinguisher/07 - Detchibe.mp3

  Set 1 of 1, preserve files [1 - 2, all]:

Đầu tiên tôi tạo thư mục như trong ví dụ của bạn. Tôi đã tạo một tệp từ dữ liệu ngẫu nhiên và sao chép nội dung của nó sang các tệp khác. Khi tôi chạy fdupes -rdphần mềm tìm thấy hai tệp chính xác và yêu cầu xóa tệp nào.

Nếu bạn có nhiều tệp, bạn có thể sử dụng tùy chọn -1. fdupessẽ in tất cả các bản sao trên một dòng duy nhất. Bạn có thể xử lý chúng với xargsvà các tính năng vỏ khác.


Có thể đặt ra từ lệnh fdupes -r được chuyển sang lệnh mv không?
John McKean Pruitt

fdupes -rd gần với những gì tôi muốn nhưng tôi sẽ phải nhấn một lần khoảng 2000 lần để tất cả các bản sao bị biến mất.
John McKean Pruitt

1
Tôi đã thêm một đoạn vào câu trả lời của tôi ở trên.
qbi

Vấn đề ở đây là fdupesdường như không đi sâu vào các thư mục phụ. Chẳng hạn, ~/Desktop/Dupes2/có một thư mục trong đó có tiêu đề Blood Sugar Sex Magik với các Dupes, nhưng một fdupes -rlệnh đơn giản không trả về bất kỳ danh sách nào.
John McKean Pruitt

2

Tôi tìm thấy một chuỗi lệnh đơn giản. Rất cám ơn @Oli.

fdupes -rf --quiet ~/Desktop/Dupes2/ | while read i; do mv "$i" ~/Desktop/Dupes/ ; done

Điều này được sử dụng fdupesđể đệ quy ( -r) tìm các bản sao, bỏ qua phần đầu tiên ( -f). Bash đọc dòng này theo dòng thông qua readtay amd mỗi dòng mvđể di chuyển tất cả các bản sao sang thư mục khác. Lưu ý việc sử dụng dấu ngoặc kép trong whilevòng lặp để xử lý dấu cách và dấu chấm câu tinh ranh khác fdupessẽ không xử lý (ngay cả với -1/ --sameline).


@Oli, đây không phải là lừa. Không có tập tin nào được chuyển từ thư mục này sang thư mục khác
John McKean Pruitt

@Oli xem bình luận mới nhất của tôi để "qbi" bên dưới.
John McKean Pruitt

1

Trong các câu trả lời cho số lượt nghe theo dõi thủ công trong Banshee? , nó mô tả cách lấy tại cơ sở dữ liệu mà banshee sử dụng để lưu tất cả thông tin theo dõi.

Khi bạn đã kết nối với cơ sở dữ liệu, trên bảng truy vấn thực hiện, dán

select tweaked_track, count(*) from 
  (select replace(replace(replace(title, ' ', ''), '-', ''), '.', '') as tweaked_track 
   from coretracks) 
group by tweaked_track 
order by 2, 1 desc;

vào hộp chuỗi SQL, sau đó bấm vào 'thực hiện truy vấn'. Điều này sẽ hiển thị cho bạn tất cả các bản nhạc bạn có cùng tiêu đề bỏ qua khoảng trắng, dấu gạch ngang và dấu chấm. Nếu có các ký tự khác mà bạn muốn bỏ qua, hãy thêm chúng vào truy vấn theo cùng một mẫu. (IE thêm replace(trước "thay thế" hiện tại đầu tiên và sau ")" cuối cùng trên dòng đó, thêm , '[character you want removed]', '').

(Tôi không biết bạn biết bao nhiêu về sql - nếu bạn cần biết thêm chi tiết, hãy đăng bình luận.)

Điều này sẽ cung cấp cho bạn một danh sách các tiêu đề. Bạn sẽ phải thực sự tự xóa.

Có thể có một cách tốt hơn để làm điều này, nhưng nếu có, tôi không biết về nó.

Khi bạn có một danh sách lớn các tệp sẽ bị xóa (từ phương thức của tôi hoặc từ fdupesnhư những người khác đã đề cập), hãy đặt danh sách các tệp bạn muốn xóa vào một thư mục văn bản. Đảm bảo một trong những điều sau là đúng:

Tùy chọn # 1: Tên tệp chứa đường dẫn đầy đủ. Ví dụ: tệp có thể chứa:

/home/doneill/music/weird_al/duped_file.mp3
/home/doneill/music/weird_al/another_dupe.mp3
/home/doneill/music/bach/baroque_dupe.mp3

Tùy chọn # 2: Tên tệp chứa đường dẫn tương đối và tệp có danh sách tên tệp được lưu trong thư mục mẹ. Ví dụ: nếu danh sách tệp của bạn được lưu vào /home/doneill/music/, nó sẽ chứa:

weird_al/duped_file.mp3
weird_al/another_dupe.mp3
bach/baroque_dupe.mp3

Trong cả hai trường hợp, hãy mở một cửa sổ đầu cuối và thay đổi thư mục chứa tệp có danh sách cd /home/doneill/music/chẳng hạn.

Gõ vào:

for a in `cat filelist.txt`; do echo $a; done

(Thay thế filelist.txt bằng tên của tệp bằng danh sách). Điều này sẽ đưa ra một danh sách tất cả các tập tin bạn muốn xóa. Hãy dành một chút thời gian để kiểm tra lại danh sách. Nếu đúng, gõ:

for a in `cat filelist.txt`; do rm $a; done

Điều này về cơ bản cho máy tính của bạn: đối với mỗi dòng trong tệp filelist.txt, hãy xóa một tệp có tên được liệt kê.


Câu hỏi hỏi về các tập tin trùng lặp, không đề cập đến Banshee.
jpd

2
@jpd Nó được gắn thẻ banshee ...
David Oneill

Xin lỗi, hoàn toàn bỏ lỡ các thẻ.
jpd

Tôi không thể truy cập vào cơ sở dữ liệu banshee vì 11.10 không có tùy chọn để mở bằng lệnh tùy chỉnh và cách giải quyết được đề xuất là không hoạt động - Tôi đã ném xuống hố thỏ trong một giây nhưng tôi đã quay lại không có giải pháp.
John McKean Pruitt

1
@JohnMcKeanPruitt 1) ​​Chạy trình duyệt cơ sở dữ liệu sqlite (lệnh là sqlitebrowsernếu nó không được đưa vào menu của bạn khi bạn cài đặt nó). 2) Tập tin -> Mở. 3) Nhập /home/[user]/.config/banshee-1/vào thanh địa chỉ 'Tìm trong' (thay thế [người dùng] bằng tên người dùng của bạn). 4) Nhấp đúp chuột vào banshee.db.
David Oneill
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.