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

时间:2015-02-24 11:22:25

标签: bash find aix readable

我在AIX上有一个命令,它找到包含一个短语并且比某个年龄大的文件。但是我的报告充满了权限被拒绝的错误。我希望find只搜索它有权限的文件。

我有linux的命令

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

然而在这种情况下我无法使用可读。

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

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

2 个答案:

答案 0 :(得分:0)

一个非常简单的修复,如果适合你,将使用grep过滤掉错误,如:

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

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

HTH!

答案 1 :(得分:0)

只需使用您的

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

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