중복 음악 트랙을 찾아 삭제하려면 어떻게합니까?


8

내 문제는 어떤 이유로 든 일부 음악 트랙이 중복되어 있다는 것입니다. 그러나 그것들의 이름은 동일하지 않습니다. 예를 들어 :

음악 / 거절 73 / One Word Extinguisher / 07. Detchibe.mp3

&

음악 / 거절 73 / 한 단어 소화기 / 07-Detchibe.mp3

중복 된 노래이지만 07 * 입니다. * 07 - 파일 이름을 기반으로 검색 중복 파일을 줍는 사람을 속여된다.


2
여기서 제안 사항을 시도해 보셨습니까 ?
jpd

fdupes가 두 복제본 중 하나를 골라서 삭제할 수 있습니까? 그렇지 않으면 fdupes -r 명령은 아무데도 가지 않는 목록 만 생성합니다.
John McKean Pruitt

이것이 귀하의 질문에 대답합니까? 중복 노래를 어떻게 찾을 수 있습니까?
karel

답변:


2

fdupes질문에 대한 답변처럼 »중복 파일을 찾고 삭제하는 방법«을 제안 하는 것처럼 사용할 수 있습니다 . 예를 들어 보겠습니다.

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]:

먼저 예제와 같이 디렉토리를 만들었습니다. 나는 임의의 데이터로 파일을 만들고 그 내용을 다른 파일로 복사했습니다. 내가 실행할 fdupes -rd때 소프트웨어는 두 개의 정확한 파일을 찾아서 어느 파일을 삭제할 것인지 묻습니다.

파일이 많으면 옵션을 사용할 수 있습니다 -1. fdupes모든 사본을 한 줄에 인쇄합니다. xargs다른 쉘 기능으로 처리 할 수 ​​있습니다 .


fdupes -r 명령의 출력을 mv 명령으로 파이프 할 수 있습니까?
John McKean Pruitt

fdupes -rd는 내가 원하는 것에 가깝지만 모든 듀피가 사라지기 위해서는 약 2000 번을 눌러야합니다.
John McKean Pruitt

1
위의 답변에 단락을 추가했습니다.
qbi

여기서 문제는 fdupes하위 폴더로 다이빙하지 않는 것입니다. 예를 들어 ~/Desktop/Dupes2/Dupes가 포함 된 Blood Sugar Sex Magik이라는 폴더가 있지만 간단한 fdupes -r명령으로 어떤 목록도 반환하지 않습니다.
John McKean Pruitt

2

다소 간단한 명령 체인을 발견했습니다. @Oli에게 감사드립니다.

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

이것은 첫 번째 ( )를 생략하고 fdupes재귀 적으로 ( -r) 듀프를 찾는 데 사용 되었습니다 -f. Bash는 readamd를 통해이 줄을 한 줄씩 읽어 각 줄 mv을 다른 디렉토리로 옮깁니다. while루프 에서 인용 부호를 사용 하여 처리 fdupes할 수없는 공백 및 기타 복잡한 문장 부호를 처리합니다 ( -1/ 포함 --sameline).


@Oli, 이것은 트릭을 수행하지 않습니다. 어떤 파일을 한 폴더에서 다른 이동되고 있지
존 맥킨 프 루이

@Oli 아래 "qbi"에 대한 최신 의견을 참조하십시오.
존 맥킨 프 루잇

1

Banshee에서 수동으로 트랙 수신 횟수 설정에 대한 답변 ? , 밴시는 모든 트랙 정보를 저장하는 데 사용하는 데이터베이스를 얻는 방법을 설명합니다.

데이터베이스에 연결되면 쿼리 실행 테이블에서 붙여 넣기

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

SQL 문자열 상자에 넣은 다음 '쿼리 실행'을 클릭하십시오. 공백, 대시 및 마침표를 무시하고 제목이 같은 모든 트랙이 표시됩니다. 무시하려는 다른 문자가 있으면 같은 패턴으로 쿼리에 추가하십시오. (IE 추가 기능 replace(이전에 최초의 "교체"를 지난 후 기존 ")"그 줄에 추가 , '[character you want removed]', '').

(SQL에 대해 얼마나 알고 있는지 잘 모르겠습니다. 자세한 내용이 필요하면 의견을 게시하십시오.)

타이틀 목록이 표시됩니다. 실제로 직접 삭제해야합니다.

이 작업을 수행하는 더 좋은 방법이있을 수 있지만 존재하는 경우 잘 모르겠습니다.

삭제할 파일 목록이 많으면 (나의 방법이나 fdupes다른 사람이 언급 한 것처럼) 삭제하려는 파일 목록을 텍스트 디렉토리에 넣습니다. 다음 중 하나에 해당하는지 확인하십시오.

옵션 # 1 : 파일 이름에 전체 경로가 포함되어 있습니다. 예를 들어 파일에 다음이 포함될 수 있습니다.

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

옵션 # 2 : 파일 이름에 상대 경로가 포함되고 파일 이름 목록이있는 파일이 상위 폴더에 저장됩니다. 예를 들어 파일 목록이에 저장된 경우 다음 /home/doneill/music/이 포함됩니다.

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

두 경우 모두 터미널 창을 열고 목록이있는 파일이 들어있는 폴더로 변경하십시오 cd /home/doneill/music/.

입력 :

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

(filelist.txt를 목록이있는 파일 이름으로 바꿉니다). 삭제하려는 모든 파일 목록이 뱉어집니다. 잠시 시간을내어 목록을 다시 확인하십시오. 올바른 경우 다음을 입력하십시오.

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

이것은 기본적으로 컴퓨터에 알려줍니다 : 파일의 각 줄마다 filelist.txt나열된 이름의 파일을 제거하십시오.


이 질문은 Banshee에 대한 언급없이 중복 파일에 대해 묻습니다.
jpd

2
@jpd 밴시 태그가 있습니다 ...
David Oneill

태그가 완전히 누락되었습니다.
jpd

11.10에는 사용자 지정 명령 으로 열 수있는 옵션이없고 해결 방법이 작동하지 않는다고 제안 했기 때문에 밴시 데이터베이스에 액세스 할 수 없습니다. 해결책이 없습니다.
John McKean Pruitt

1
@JohnMcKeanPruitt 1) ​​sqlite 데이터베이스 브라우저를 실행하십시오 (명령 sqlitebrowser을 설치할 때 메뉴에 입력되지 않은 경우 명령입니다 ). 2) 파일-> 열기. 3) /home/[user]/.config/banshee-1/'찾아보기'주소 표시 줄에 입력하십시오 ([사용자]를 사용자 이름으로 바꾸십시오). 4)를 더블 클릭하십시오 banshee.db.
David Oneill
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.