我有这段代码:
find . ! -path . -type d -maxdepth 3 -mindepth 3 -exec sh -c '
dir="$0"
tvnamer --batch $dir
mv $dir/*.mkv $dir/..
[ -f $dir/*.part ] || trash $dir
' {} ';'
然而,由于$dir
中的目录名称中有空格(TVnamer感到困惑),它会中断。
./Show/Season/[ www.Torrenting.com ] - Castle.2009.S06E01.720p.HDTV.X264-DIMENSION
./Show/Season/[ www.Torrenting.com ] - Revenge.S03E01.720p.HDTV.x264-2HD
如何删除空格/重命名$dir
中的文件夹,然后将其传递给其余代码?
答案 0 :(得分:2)
引用$dir
时使用双引号:
find . ! -path . -type d -maxdepth 3 -mindepth 3 -exec sh -c '
dir="$0"
tvnamer --batch "$dir"
mv "$dir"/*.mkv "$dir"/..
[ -f "$dir"/*.part ] || trash "$dir"
' {} ';'
答案 1 :(得分:1)
正如@fedorqui所说,这是你的“代码”中的一个错误,它没有引用目录名称。但是,要回答您的问题如何从shell中的变量/目录中删除空格?:
dir="Program Files"
new_dir=${dir// /}
mv "$dir" "$new_dir"
Bash和ksh93(以及其他地方)支持字符串替换。 ${dir// /}
表示:接受变量dir
并将全局(//
)模式 space 替换为空(最终/
之后的文本)。