I want to find all files that are:

  • recent
  • do not end in .class
  • no directories

This is what I have attempted but it is not working:

find . \( -atime -1 -a \! -type d -a \! -name '.class' \) -ls

I simplified it to this:

find . -atime -1 -ls

But it is still picking up things from January and earlier. What is going wrong here?

link|improve this question

-a (and) is implied so you can omit those (and the parentheses). You probably also want a "*" in the name spec: \! -name '*.class' – Dennis Williamson Feb 10 '10 at 20:41
I see you've already done that here: superuser.com/questions/107201/… – Dennis Williamson Feb 10 '10 at 20:45
feedback

2 Answers

up vote 3 down vote accepted

You probably want either -mtime or -ctime. -atime checks the access time, which includes accessing the file metadata. So doing a ls (or a find -atime) will update the access time. -mtime is the time the file contents were last modified and -ctime is the last time the "status" was changed, which I think is the file metadata (permissions, etc).

link|improve this answer
feedback

Solutions use:

find . -ctime -1 -ls
link|improve this answer
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.