#!/bin/bash # coded by xiooli #用法: # 1,重命名:先cd到你的音乐目录,然后在终端里运行脚本mrename,将会对当前目录的所有拥有标签 #的音乐进行重命名,格式为:标题-艺人.扩展名,改名对应情况会记录在当前目录下的 remane-时间.list 文 #件里,方便恢复; # 2,恢复原名:mrename -r ./remane-时间.list #注意: # 需要安装python-mutagen包,运行时会更新音乐标签的编码为当前locale。 rename() { list="rename-$(date +%m-%d-%k-%M).list" >"$list" ls |while read name;do ar=`mid3v2 -l $name |grep TPE1 |sed 's/^.*=//'` ti=`mid3v2 -l $name |grep TIT2 |sed 's/^.*=//'` tl=`echo $name |sed 's/^.*\.//'` [ "$ti" ] && mid3iconv -e gb2312 "$name" [ "$ti" ] || continue [ "$name" != "$ti-$ar.$tl" ] && mv "$name" "$ti-$ar.$tl" &&\ echo -e "重命名\033[;32m <$name> \033[0m为\033[;32m <$ti-$ar.$tl> \033[0m" \ && echo "$name:$ti-$ar.$tl" >>"$list" done } recover() { for lst in `cat $1 |sort |uniq`;do nm1=`echo $lst |sed 's/^.*://'` nm0=`echo $lst |sed 's/:.*$//'` [ -e "$nm1" -a ! -e "$nm0" ] && mv "$nm1" "$nm0" &&\ echo -e "恢复\033[;32m <$nm1> \033[0m为\033[;32m <$nm0> \033[0m" done } if [ "$1" = "-r" ];then echo "即将从 "$2" 中恢复命名" read -p "确认?y/n :" a if [ $a = "y" ];then [ "$2" ] && recover "$2" [ "$2" ] || echo "未选择list文件!" else exit fi else echo "即将重命名当前文件夹的所有音乐" read -p "确认?y/n :" b [ $b = "y" ] && rename fi |
|