Skip to main content
Tweeted twitter.com/#!/StackUnix/status/240735727229497344
edited tags
Link
Gilles 'SO- stop being evil'
  • 866.1k
  • 205
  • 1.8k
  • 2.3k
Source Link
cwd
  • 47.1k
  • 73
  • 155
  • 172

How can I use bash's if test and find commands together?

I have a directory with crash logs, and I'd like to use a conditional statement in a bash script based on a find command.

The log files are stored in this format:

/var/log/crashes/app-2012-08-28.log /var/log/crashes/otherapp-2012-08-28.log 

I want the if statement to only return true if there is a crash log for a specific app which has been modified in the last 5 minutes. The find command that I would use is:

find /var/log/crashes -name app-\*\.log -mmin -5 

I'm not sure how to incorporate that into an if statement properly. I think this might work:

if [ test `find /var/log/crashes -name app-\*\.log -mmin -5` ] then service myapp restart fi 

There are a few areas where I'm unclear:

  • I've looked at the if flags but I'm not sure which one, if any, that I should use.
  • Do I need the test directive or should I just process against the results of the find command directly, or maybe use find... | wc -l to get a line count instead?
  • Not 100% necessary to answer this question, but test is for testing against return codes that commands return? And they are sort of invisible - outside of stdout / stderr? I read the man page but I'm still pretty unclear about when to use test and how to debug it.