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



我可以访问一个随机名称的mp3文件列表,这些文件来自一个为维基百科提供单词音频文件的免费许可项目。中文文件列表在这里/在这里,示例文件在这里

然而,每个文件也包含有价值的元数据:

$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ī的特殊字符

从信息转储中解析出所需的数据,将其捕获到一个变量中,然后使用该变量:

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)

注意:是一个重命名函数,而不是一个复制重命名函数

最新更新