我有很多专辑,每个专辑都放在一个文件中,我想把它分成曲目。我可以保证每个文件夹只有一个flac文件,其中一个同名的cue文件。
我写道:
#!/bin/sh
IFS=$'\n'
current=`pwd`
for d in `find . -name *.cue -print0 | xargs -0 -n1 dirname | sort --unique`
do
cd \""$d"\"
f=`ls *.cue`
cuebreakpoints *.cue | shnsplit flac *.flac
cuetag *.cue split*.flac
rm ${f%.cue}.*
cd \""$current"\"
done
unset IFS
由于find
命令没有转义文件名,我将IFS更改为换行符。当我执行脚本时,它在两个cd
行中失败,表示提供的路由不存在。
例如,假设这个文件结构:
> Downloads
split.sh
> Music
> FLAC
> Goa Trance
> Others
> (1997) Test Label - Album Name - Subtitle Of The Album
album test.flac
album test.cue
当我执行脚本时会抛出两个错误(以及由于目录未更改而导致的其他错误):
./split.sh: line 6: cd: "./Music/FLAC/Goa Trance/Others/(1997) Test Label - Album Name - Subtitle Of The Album": No such file or directory
...
./split.sh: line 11: cd: "/Users/robotFive/Downloads": No such file or directory
但如果我执行完全正确的话:
cd "./Music/FLAC/Goa Trance/Others/(1997) Test Label - Album Name - Subtitle Of The Album"
cd "/Users/robotFive/Downloads"
你知道会发生什么吗?
谢谢。
答案 0 :(得分:1)
我认为有一个逃脱,改变:
cd \""$d"\"
为:
cd "$d"