2013-05-12 59 views
0

我看到这个命令了很长时间的工作:查找在Solaris 9命令停止工作

find $dir -name $basename.[0-2][0-3][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-3][0-3][0-3] -exec rm -f {} \; 

突然,它停止工作。

我试图把单引号'放在文件名之间,它可以工作几天。然后我用双引号",它现在再次工作。

由于我没有在系统或帐户中发现任何更改(都使用ksh),请您给出一个合理的理由让这个停止工作没有明显的原因?

+1

文件名中是否有空格? – FDinoff 2013-05-12 00:51:42

回答

2

围绕括号扩展的变量和单引号应该有双引号。前者是为了保护文件名中的空格,制表符和换行符。后者是为了延迟括号表达式的扩展,以便find代替shell。您也许需要在花括号周围加双引号才能保护空白空间。

find "$dir" -name "$basename".'[0-2][0-3][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-3][0-3][0-3]' -exec rm -f "{}" \; 

它不工作的原因很可能是一个文件中的当前目录(不一定$dir)相匹配的括号表达式并使其过早膨胀存在。

如果上述不起作用,请在没有大括号的引号的情况下尝试。