我看到这个命令工作了很长时间:
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),你能否给出合理的理由让这个停止工作没有明显的原因?
答案 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>
如果上述方法不起作用,请尝试在花括号周围不加引号。