Bash 脚本:切换到带有特殊字符的目录

Bash 脚本:切换到带有特殊字符的目录

我有一个 bash 脚本,可以浏览我的音乐收藏并下载缺失的封面。我遇到的问题是,我无法 cd 到某些包含“&”、“(”和其他字符的目录。

脚本的相关部分复制如下:

IFS="\n"
IFS="$(printf '\n\t')"
for i in `find $1 -mindepth 2 -maxdepth 2 -type d '!' -exec sh -c 'ls -1 "{}"|egrep -i -q "^cover\.(jpg|png)$"' ';' -print`; do
        echo "===="
        echo "processing: " $i
        cd "${i}"
        #download_cover $i
        echo "++++"
done

如果我对这些目录运行此脚本,我会得到以下输出:

cd 'media/FlacMusic/Mumford & Sons/Sigh No More'
devel/get_album_cover.sh: line 22: cd: media/FlacMusic/Mumford & Sons/Sigh No More: No such file or directory

答案1

这是原帖作者的解决方案。它是作为对问题的编辑发布的,但它应该是一个答案。

我去掉了变量周围的括号,脚本运行正常。

cd "$i"

相关内容