1

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

我有适用于 linux 的命令

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

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

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

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

4

2 回答 2

1

只需使用您的

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

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

于 2015-02-24T15:05:13.643 回答
0

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

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

这将隐藏任何包含短语“权限被拒绝”(区分大小写)的结果。

于 2015-02-24T11:25:30.997 回答