gpt4 book ai didi

bash - 在 BASH 中获取相对路径

转载 作者:行者123 更新时间:2023-11-29 09:09:18 28 4
gpt4 key购买 nike

我已经搜索过这个,但我猜对使用路径的需求不大。所以我正在尝试编写一个 bash 脚本来使用 tta 和 cue 文件转换我的音乐收藏。我的目录结构如下:/Volumes/External/Music/Just/Some/Dirs/Album.tta 用于 tta 文件,/Volumes/External/Cuesheets/Just/Some/Dirs/Album.cue 用于提示表。

我目前的方法是将/Volumes/External 设置为“root_dir”,并将 album.tta 文件的相对路径获取到 $ROOT_DIR/Music(在本例中为 Just/Some/Dirs/Album.tta),然后将此结果添加到 $ROOT_DIR/Cuesheets 并将后缀从 .tta 更改为 .cue。

我当前的问题是,目录名按原样返回路径,这意味着/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

最佳答案

如果你的Cuesheets目录总是和你的Music目录在同一个目录下,你可以把root_dir从路径中去掉,剩下的就是相对路径。如果您在 album_path (album_path=/Volumes/External/Music/Just/Some/Dirs/Album.tta) 和您的 root_dir set(root_dir=/Volumes/External),只需执行 ${album_path#$root_dir}。这将从 album_path 的前面修剪 root_dir,所以你留下 album_path=Just/Some/Dirs/Album.tta

参见 bash docs有关 bash 字符串操作的更多信息

EDIT://将 ${$album_path#$root_dir} 更改为 ${album_path#$root_dir}

关于bash - 在 BASH 中获取相对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8196354/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com