我已经搜索了一下,但是我猜没有太多人需要处理路径相关的内容。 所以我正在尝试编写一个bash脚本来使用tta和cue文件转换我的音乐收藏。 我的目录结构如下:/Volumes/External/Music/Just/Some/Dirs/Album.tta 用于tta文件和 /Volumes/External/Cuesheets/Just/Some/Dirs/Album.cue 用于cue表。
我的当前方法是将 /Volumes/External 设置为“root_dir”,并获取相对于 $ROOT_DIR/Music 的 album.tta 文件的路径(在这种情况下,这将是 Just/Some/Dirs/Album.tta),然后将此结果添加到 $ROOT_DIR/Cuesheets 中,并将后缀从 .tta 更改为 .cue。
我当前的问题是,dirname 返回的路径是它们本身,这意味着当我的当前文件夹是 $ROOT_DIR/Music 并且给出了绝对路径时,/Volumes/External/Music/Just/Some/Dirs 不会被转换为 ./Just/Some/Dirs/。
附://如果有人遇到类似的问题,这是脚本:
#!/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