使用FLAC / MP3元数据的值重命名文件?

时间:2014-05-30 17:36:27

标签: bash shell mp3 mv flac

我可以访问一个带有随机名称的mp3文件列表,这些文件来自一个免费许可证项目,该项目为维基百科提供了单词的音频文件。 Chinese list of files here / herea sample file here

但是,每个文件还包含有价值的元数据:

$avconv -i ./audio.flac 2>&1
>Metadata:
    TITLE           : 高低
    LICENSE         : Creative Commons BY-SA 3.0 U.S
    COPYRIGHT       : (c) 2009 Yue Tan
    ARTIST          : Tan
    DATE            : 2009-07-08
    GENRE           : Speech
    SWAC_LANG       : cmn
    SWAC_TEXT       : 高低
    SWAC_ALPHAIDX   : gāodī
    SWAC_SPEAK_NAME : Tan
    SWAC_SPEAK_GENDER: F
    SWAC_SPEAK_BIRTH_YEAR: 1978
    SWAC_SPEAK_LANG : zho
    SWAC_SPEAK_LANG_REGION: Liaoning
    SWAC_SPEAK_LIV_COUNTRY: FR
    SWAC_SPEAK_LIV_TOWN: Caen
    SWAC_PRON_PHON  : gāodī
    SWAC_COLL_SECTION: HSK niveau IV
    SWAC_COLL_LICENSE: Creative Commons BY-SA 3.0 U.S
    SWAC_COLL_COPYRIGHT: (c) 2009 Yue Tan
    SWAC_TECH_DATE  : 2009-07-08
    SWAC_TECH_SOFT  : Shtooka Recorder/1.3
  Duration: 00:00:01.25, bitrate: 392 kb/s
    Stream #0.0: Audio: flac, 44100 Hz, 1 channels, s16

如何将元数据SWAC_ALPHAIDX的值作为Shell变量获取,以便我可以相应地重命名我的文件?

所以我可能会做类似

的事情
$mv -input ./cmn-0a0a8a8b.flac -output ./new/cmn-$ALPHAIDX.flac 
# ouput being cmn-gāodī.flac

编辑:也会接受其他元数据的回答,如果不知情,则无需管理gāodī的特殊字符。

1 个答案:

答案 0 :(得分:3)

从信息转储中解析出您想要的数据,将其捕获到变量中,然后使用它:

for file in ./*.flac
do
  alphaidx=$(avconv -i "$file" 2>&1 | sed -ne 's/.*SWAC_ALPHAIDX *: //p')
  mv "$file" "./cmn-$alphaidx.flac"
done

使用gāodī (SWAC_ALPHAIDX)或CJK等变音字符高低 (SWAC_TEXT)

注意:这是一个重命名功能,而不是复制重命名功能。