我已经搜索了这个,但我想这对于处理路径没有太大的需求。 因此,我试着用bash脚本写一个bash脚本来使用tta和cue文件转换我的音乐集合。 我的目录结构如下:/Volumes/External/Music/Just/Some/Dirs/Album.tta用于tta文件和/Volumes/External/Cuesheets/Just/Some/Dirs/Album.cue用于提示表。在BASH中获取相对路径
我目前的做法是将/ Volumes/External设置为“root_dir”,并获取album.tta文件的相对路径为$ ROOT_DIR/Music(在这种情况下,这将是Just/Some/Dirs/Album.tta) ,然后将此结果添加到$ ROOT_DIR/Cuesheets,并将.tta的后缀更改为.cue。
我目前的问题是,该dirname返回路径,这意味着/ Volumes/External/Music/Just/Some/Dirs不会被转换为./Just/Some/Dirs/当我的当前文件夹为$ ROOT_DIR /音乐和绝对路径被给出。
地址://这里是脚本如果任何人有类似的问题:
#!/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
我不清楚这里的问题是什么。 – drysdam
问题是如何从绝对路径中获得某个相关部分。在我的情况下,$ BASE和如何创建它是相关的部分。我告诉我的意图的原因是,我不确定我的方法是否聪明,因为我相信总会有更好的方法去做任何事情。 –