我可以访问一个随机名称的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)
。
注意:是一个重命名函数,而不是一个复制重命名函数