【问题标题】:Search only directories with permission -find (Bash 4.2)仅搜索具有权限的目录 -find (Bash 4.2)
【发布时间】:2015-04-25 23:57:46
【问题描述】:

我在 AIX 上有一个命令,可以查找包含短语且超过特定年龄的文件。但是我的报告充满了权限被拒绝的错误。我希望 find 仅搜索它有权访问的文件。

我有适用于 linux 的命令

find /home/ ! -readable -prune -name 'core.20*' -mtime +7 -print

但是在这种情况下,我无法使用可读的。

find /home/ -name 'core.20*' -mtime +7 -print 2>/dev/null

效果很好,但这仍然会尝试搜索目录,花费时间。

【问题讨论】:

    标签: bash find aix readable


    【解决方案1】:

    只要用你的

    find /home/ -name 'core.20*' -mtime +7 -print 2>/dev/null
    

    如果您想在未经许可的情况下跳过目录,您的脚本必须以某种方式向 Unix 请求许可。这正是 find 正在做的事情:当顶层关闭时,没有时间花在下面的树上。唯一的成本是标准错误,这就是您重定向的成本。
    当您想针对日常使用进行优化时,您可能希望在每 6 天一次的 crontab 中创建一个文件超过一天未更改的文件,并将日志用作日常 claing 的输入。此解决方案无济于事,而且非常肮脏。只要坚持你的2>/dev/null

    【讨论】:

      【解决方案2】:

      如果对您有用,一个非常简单的修复方法是使用 grep 过滤掉错误,例如:

      find /home/ -name 'core.20*' -mtime +7 -print 2>/dev/null | grep -v 'Permission denied'
      

      这将隐藏任何包含短语“Permission denied”(区分大小写)的结果。

      HTH!

      【讨论】:

      • 感谢您的回答,我已经成功隐藏了结果。但是 -find 仍会尝试搜索目录。这将在更大的系统中花费时间
      • grep -v 没有做任何事情;错误消息已被2>/dev/null 丢弃。
      • 在那种情况下,我误解了你的问题。我以为你的问题是“但是我的报告充满了权限被拒绝的错误”
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-02-02
      • 1970-01-01
      • 2018-09-07
      • 1970-01-01
      • 2013-07-19
      • 2018-05-25
      • 2016-11-27
      相关资源
      最近更新 更多