I found an SO called using Find/Grep to search files between specific time of day

Based on that and a Unix SE called Grep command to find files containing text string and move them I ended up with:

find . -type f -mtime -20 | grep -v -e " \(0[012345]\|18\|19\|2[0123]\)" | xargs mv -t daytime/

But it's moving ALL the files. Does it make a difference that I'm using Ubuntu?

All I want to do is move all files between 6am and 6pm to another directory. Any suggestions would be appreciated.

1 Answer 1


Actually, find already has this functionality:

find . -newermt "2013-01-01 00:00:00" ! -newermt "2013-01-02 00:00:00"

From the manpage:

-newerXY reference
       Compares  the timestamp of the current file with reference.  The
       reference argument is normally the name of a file  (and  one  of
       its  timestamps is used for the comparison) but it may also be a
       string describing an absolute time.  X and  Y  are  placeholders
       for other letters, and these letters select which time belonging
       to how reference is used for the comparison.

       a   The access time of the file reference
       B   The birth time of the file reference
       c   The inode status change time of reference
       m   The modification time of the file reference
       t   reference is interpreted directly as a time

       Some combinations are invalid; for example, it is invalid for  X
       to  be t.  Some combinations are not implemented on all systems;
       for example B is not supported on all systems.  If an invalid or
       unsupported  combination  of  XY  is  specified,  a  fatal error
       results.  Time specifications are interpreted as for  the  argu‐
       ment  to the -d option of GNU date.  If you try to use the birth
       time of a reference file, and the birth time  cannot  be  deter‐
       mined,  a  fatal  error  message results.  If you specify a test
       which refers to the birth time of  files  being  examined,  this
       test will fail for any files where the birth time is unknown.
  • Thanks @msdl, I didn't realise that. It seems to only act on todays date when give "08:00:00" without the date, so it seems it needs one day at a time. But that'll do me - thanks! Apr 9, 2013 at 11:35
  • So how can i get those files printed in the terminal? i tried this command but it didn't print anything for me!
    – Kulasangar
    Nov 9, 2014 at 9:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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