Solaris 9上的查找命令停止工作

时间:2013-05-12 00:46:38

标签: solaris ksh

我看到这个命令工作了很长时间:

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 个答案:

答案 0 :(得分: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)中存在与括号表达式匹配并导致其过早扩展的文件。 / p>

如果上述方法不起作用,请尝试在花括号周围不加引号。