web-dev-qa-db-ja.com

ファイル名の誤ったエンコーディングを修正

不思議なことに、私がWindows 7 OSの友人から得た一部の音楽のエンコーディングが、nautliusで誤ったエンコーディングで表示されます。私はすでにそれを試しました

convmv --notest -r -f windows-1255 -t utf-8 *

しかし、それはそれを修正しませんでした。それはむしろ別の間違ったエンコーディングです。 latin1とlatin3でも試してみました。元のエンコーディングが何なのかわからないし、それがわからないので、自分のオプションは何なのか疑問に思っています。

どんなアドバイスでもThx。

2
joaoal

すべてのエンコーディングを試すには、mychosenfile.mp3mなどのファイルの1つを選択してから、すべてのエンコーディングをループします。運が良ければ、問題ないように見えます。これは、可能な新しい名前をリストするだけです:

file=mychosenfile.mp3
for enc in $(convmv --list)
do  echo $enc: $(convmv --parsable -f $enc -t utf-8 "$file")
done

または、ファイルの名前をid3タグから取得した曲のトラックとタイトルに変更できます(ある場合)。たとえば、(これはmvコマンドのエコーです):

find mydir -name '*.mp3' |
while read file
do if newname="$(id3info "$file" |
        awk -F': ' '
         /^=== TRCK/{ track = $2 }
         /^=== TIT2/{ title=$2;gsub(" ","_",title) }
         END        { if(title!="")printf "%02d_%s.mp3\n",track,title }
        ')"
   then dir=$(dirname "$file")
        echo mv "$file" "$dir/$newname"
   fi
done
1
meuh

すべてのファイル名から特殊文字を削除するには、detoxを使用します。

detox -r -v -s utf8 /path/to/files/

-nを渡して、何が行われるかを確認し、適切に聞こえることを確認することもできます。

音楽タグに従ってすべてのファイルの名前を変更するには、lltagを使用します。

lltag -R --mp3v2 --mp3read=21 --rename '/new/path/%a/%A/%n %t' /path/to/files

何が行われるかを確認するには、最初の呼び出しに--dry-runを渡すことを検討する必要があります。 --yesを渡します。質問に答えるのに飽きたら(タグがない場合など、新しい名前の品質に影響する可能性があります)。

詳細はman detoxman lltagにあります。

0
Mirek Długosz