I have files with their names as


StartDate, StartTime, EndDate and EndTime are given as input.

How can I get all filenames (or relative paths) having Date and Time between the given Date and Time ranges and write those to a Log file using a shell script?

Date and Time are not the last accessed or modified date/timestamp and there are no whitespaces in filenames.

And I can either take Date and Time input individually without any seperator between fields, for example
or I can take input as

  • How the date and time relative?
    – cuonglm
    Jul 4, 2014 at 6:40
  • Date and Time together would corresponds to a Timestamp. Is that what u meant ? Jul 4, 2014 at 7:20

1 Answer 1


Algorithm to do this work:

for each file get the date & make difference the same with given date. Please find the below link for the date difference.


For solaris(unix without GNU date) use this link

If you want time wise , inside date for loop use loop for time . To get the difference in time you can use following code

      time2=$( date +%H:%M ) # 16:00
      diff=$(  echo "$time2 - $time1"  | sed 's%:%+(1/60)*%g' | bc -l )
      echo $diff hours
      # outputs 1.5 hours

Here sed replaces a : with a formula to convert to 1/60. Then the time calculation that is made by bc ( click link for more information).

Note : If the DIFFERENCE is +ve then , log/content can be put designated file otherwise not

  • Date difference that would do, but how can I retrieving filename and comparing parts of filename and then storing those filenames who satisfies the conditions into another file. Jul 8, 2014 at 4:34

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .