我有一个以.zip形式提供的专有打包文件。这些文件的内容始终遵循相同的结构。
在根文件夹中是一个XML文件(播放列表),列出包含音频文件的文件夹。
示例:
<playlist>
<playlistversion>1.0</playlistversion>
<item>daudio\localaudio\Q2013\0989\0001\</item>
<item>daudio\localaudio\Q2013\0989\0002\</item>
<item>daudio\localaudio\Q2013\0989\0003\</item>
<item>daudio\localaudio\Q2013\0989\0004\</item>
<item>daudio\localaudio\Q2013\0989\0005\</item>
</playlist>
每个文件夹都包含一个音频文件,该文件被拆分为具有连续命名扩展名的块。
我需要编写一个执行以下操作的脚本:
以下是一个示例文件:http://cl.ly/aAwB
答案 0 :(得分:0)
使用dd将文件与bash脚本合并。
带有find的for循环可以找到所有文件。由于它们是按顺序命名的,因此您只需使用dd和stat将所有文件链接在一起。
无需使用python过度复杂化。
答案 1 :(得分:0)
您可以使用一个小脚本
来完成#!/bin/bash
[ ! -e $1 ] && exit 9 # Exit if file doesn't exists
unzip -p $1 $(basename $1 .zip)/*/*/*/*/*.a* >$(basename $1 .zip).mp3
注意:
[ ! -e $1 ]
确保存在zip文件unzip -p
<强> -p 强>
将文件解压缩到管道(stdout)。除了将文件数据发送到stdout之外,文件总是以二进制格式提取 因为它们被存储(没有转换)。
basename
是为了避免提取__MACOSX/
路径>
重定向到一个名称相同但扩展名为mp3
的新文件。
PS&GT;如果您只想在一行中看到它,可以使用
[ -e $1 ] && unzip -p $1 $(basename $1 .zip)/*/*/*/*/*.a* >$(basename $1 .zip).mp3
如果成功,两个版本将以代码0退出,如果找不到文件或退出代码为unzip,则代码为9。
我建议你添加一些额外的控件来检查输出文件是否存在,如果输入文件是zip文件,如果扩展名为.zip
...