0

我可以从一个免费的许可证项目中访问一个随机名称的 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ī 的特殊字符。

4

1 回答 1

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)

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

于 2014-05-30T18:01:48.990 回答