2013-10-21 56 views
0

我有这段代码:如何从shell中的变量/目录中删除空格?

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的文件夹,然后传递到代码的其余部分?当你引用$dir

回答

2

使用双引号:

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

正如@fedorqui说,它是在你那里没有引用目录名“的码位”的错误。但是,要回答你的问题如何从shell中的变量/目录中删除空格?

dir="Program Files" 
new_dir=${dir// /} 
mv "$dir" "$new_dir" 

的字符串替换在击和ksh93的(也许在别处)的支持。 ${dir// /}表示:取全局替换dir//)的模式空格没有任何内容(最后/后面的文字)。