Take the 2-minute tour ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

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.

share|improve this question

migrated from stackoverflow.com Apr 9 '13 at 10:27

This question came from our site for professional and enthusiast programmers.

1 Answer 1

up vote 10 down vote accepted

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.
share|improve this answer
    
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! –  digitaltoast Apr 9 '13 at 11:35

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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