【问题标题】:Find command on Solaris 9 stopped workingSolaris 9 上的查找命令停止工作
【发布时间】:2013-05-12 00:46:38
【问题描述】:

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

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),您能否给出一个合理的理由来说明这种没有明显原因的停止工作?

【问题讨论】:

  • 文件名中有空格吗?

标签: solaris ksh


【解决方案1】:

变量应该有双引号,括号扩展应该有单引号。前者是为了保护文件名中的空格、制表符和换行符。后者是延迟括号表达式的扩展,以便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)并导致它过早展开。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-27
    • 2016-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-22
    • 2018-01-16
    • 2017-10-08
    相关资源
    最近更新 更多