仅搜索具有权限的目录 -find (Bash 4.2)

Search only directories with permission -find (Bash 4.2)

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

我有 linux 命令有效

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

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

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

工作得很好,但这仍然会尝试搜索耗费时间的目录。

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

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

这将隐藏所有包含短语 'Permission denied'(区分大小写)的结果。

HTH!

只需使用您的

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

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