我已经找过这个了,但是我想没有什么需要和小路一起工作的。
所以我试着用tta和cue文件写一个bash脚本来转换我的音乐集。
我的目录结构如下:tta文件的/Volumes/External/Music/Just/Some/Dirs/Album.tta和提示表的/Volumes/External/cue sheets/Just/Some/Dirs/Album.cue。
我当前的方法是将/Volumes/External设置为“root_dir”,并将album.tta文件的相对路径设置为$root_dir/Music(在本例中,这只是/Some/Dirs/album.tta),然后将此结果添加到$root_dir/Cuesheets,并将后缀从.tta更改为.cue。
我当前的问题是,dirname按原样返回路径,这意味着/Volumes/External/Music/Just/Some/Dirs不能转换为./Just/Some/Dirs/当我当前文件夹是$ROOT\u DIR/Music并且给定了绝对路径时。
如果有人有类似的问题,这里是脚本:
#!/bin/bash
ROOT_DIR=/Volumes/External
BASE="$1"
if [ ! -f "$BASE" ]
then
echo "Not a file"
exit 1
fi
if [ -n "$2" ]
then
OUTPUT_DIR="$HOME/tmp"
else
OUTPUT_DIR="$2"
fi
mkfdir -p "$OUTPUT_DIR" || exit 1
BASE=${BASE#"$ROOT_DIR/Music/"}
BASE=${BASE%.*}
TTA_FILE="$ROOT_DIR/Music/$BASE.tta"
CUE_FILE="$ROOT_DIR/Cuesheets/$BASE.cue"
shntool split -f "${CUE_FILE}" -o aiff -t "%n %t" -d "${OUTPUT_DIR}" "${TTA_FILE}"
exit 0
最佳答案
如果你的Cuesheets目录总是和你的音乐在同一个目录中,你可以从路径中删除根目录,剩下的是相对路径。如果您的album_path(album_path=/Volumes/External/Music/Just/Some/Dirs/Album.tta
)中有指向album.tta的路径,并且根目录集(root_dir=/Volumes/External
),只需执行${album_path#$root_dir}
。这将从唱片集路径的前面修剪根目录,这样您就只剩下album_path=Just/Some/Dirs/Album.tta
。
有关bash字符串操作的更多信息,请参见bash docs
编辑://Changed${$album_path#$root_dir}为${album_path#$root_dir}