MP3 노래 일괄 이름 바꾸기

MP3 노래 일괄 이름 바꾸기

나는 testdisk를 사용하여 수십만 개의 .mp3 노래를 복원했고 디렉터리에 다음과 같은 결과를 얻었습니다.

f196833984.mp3

그러나 Rhythmbox에 로드하면 원시 마크업으로 나타납니다.

내가 원하는 것은 이름 지정을 제거하고 이를 태그 정보로 대체하고 디렉토리에서 해당 정보를 보는 것입니다.

지금 무슨 일이 일어나고 있는지에 대한 이미지가 있습니다. 여기에 이미지 설명을 입력하세요.

이것이 출력이다

id3v2 -l f194867904.mp3

id3v2에서:

> id3v1 tag info for f194867904.mp3:
Title  : "Sempre libera"                 Artist: Anna Netrebko                 
Album  : Rolando Villaz�n / Violetta -   Year: 2005, Genre: Classical (32)
Comment: Easy CD-DA Extractor            Track: 5
id3v2 tag info for f194867904.mp3:
TIT2 (Title/songname/content description): "Sempre libera"
TPE1 (Lead performer(s)/Soloist(s)): Anna Netrebko
TPE2 (Band/orchestra/accompaniment): Anna Netrebko
TALB (Album/Movie/Show title): Rolando Villazón / Violetta - Arias and Duets from Verdi's La Traviata
TYER (Year): 2005
COMM (Comments): ()[XXX]: Easy CD-DA Extractor
TCON (Content type): Classical (32)
TRCK (Track number/Position in set): 5

감사합니다. 이제 제가 한 일과 결과를 정확하게 보여주는 이미지로 결과를 게시하고 있습니다. 맨 왼쪽 이미지는 맨 오른쪽 터미널에 나열된 노래 폴더입니다. 노래가 어디로 갔는지 모르겠습니다. 하지만 하나 남았고, 이 글을 쓰는 동안 나는 그것을 즐기고 있습니다. 아래 이미지와 같이 VLC에서 이를 확인할 수 있습니다. 여기에 이미지 설명을 입력하세요.

답변1

쉘 스크립트 아이디어가 마음에 들지 않는다면 정말 그렇습니다.웅덩이 태그내 음악 파일의 태그를 관리합니다. 당신은 할 수태그를 기반으로 일괄 이름 바꾸기 파일마우스를 몇 번만 클릭하면 됩니다.

답변2

하나만 사용하고 싶어요for 루프디렉터리의 각 파일을 반복합니다.

각 반복에서는ff 프로브태그를 덤프한 다음grep텍스트를 필터링하고 가져오기제목그리고아티스트별도의 변수에 깨끗한 텍스트 문자열로 사용됩니다.

마지막으로 파일 이름을 'Artist - Title.ext'로 바꿉니다.


중요한:이러한 파일 중 일부를 새로운 별도의(또는 빈) 디렉터리에 복사합니다.

그런 다음 모든 파일에 대해 스크립트를 실행하기 전에 해당 디렉터리의 내용에 대해 테스트 실행을 수행합니다. 예상치 못한 일이 발생하는 경우 데이터 손실을 방지하는 데 도움이 될 수 있습니다.


예:


for fN in * ;do
  strTags="$(2>&1 ffprobe -loglevel quiet -show_entries format_tags=artist,title "${fN}"|grep 'TAG:.*=.*$')"

  strTitle="$(echo "${strTags}"|grep 'TAG:title=.*$')"
  strArtist="$(echo "${strTags}"|grep 'TAG:artist=.*$')"

  mv "${fN}" "${strArtist:10}"' - '"${strTitle:9}${fN: -4:4}"

done

답변3

어떤 일을 하기 전에 전체 기사를 읽어보세요

#!/bin/bash

for file in $(ls $1)
do
  line=$(id3v2 -l $file | sed -n '2p')
  title=$(echo $line | cut -d '"' -f 2 | sed 's/ /_/g')
  artist=$(echo $line | cut -d ':' -f 3 | awk '{$1=$1};1' | sed 's/ /_/g')
  mv $1/$file $1/$artist-$title
done

그러면 각 파일의 이름이 <아티스트 이름> <노래 제목>으로 바뀌고 그 사이에 대시가 추가됩니다.

이를 다른 이름으로 저장하고(예: script.sh) 실행 가능하게 만든 다음(chmod +x script.sh) 대상 디렉터리를 지정하여 실행합니다. 예:

./script.sh <target directory>

대상 디렉터리에 이름을 바꾸려는 노래만 포함되어 있는지 확인하세요.
Enter를 누르기 전에 구문이 올바른지 확인하세요.
나는 당신이 게시한 예에서만 이것을 테스트했습니다.

부적절하게 사용할 수 있음시스템을 엉망으로 만들다이 스크립트가 잘못된 ls 호출을 받게 되는 경우. 다른 잠재적인 문제를 방지하려면 새 디렉토리를 만들고 약 5~10곡의 노래를 복사한 다음 거기에서 스크립트를 실행하여 원하는 대로 올바르게 작동하는지 확인하는 것이 좋습니다.

자신의 책임 하에 사용하세요

관련 정보