Search code examples
bashfindaixreadable

Search only directories with permission -find (Bash 4.2)


I have a command on AIX that finds files containing a phrase and are older than a certain age. however my report is full of permission denied errors. I would like the find to only search files that it has permission for.

I have command for linux that works

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

however in this case i am unable to use readable.

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

works rather well, but this still tries to search the directories costing time.


Solution

  • Just use your

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

    When you want to skip dir's without permission, your script must somehow ask Unix for permission. This is exactly what find is doing: when the toplevel is closed, no time is spent on the tree beneath. The only cost is the stderr, and that is what you redirect.
    When you want to optimise this for daily use, you might want to make a file with files not changed for over a day in a once-every-6-days crontab, and use the log as input for the daily claing. This solution will not help much and is very dirty. Just stick with your 2>/dev/null