Date issue


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Date issue
# 1  
Old 09-29-2019
Date issue

How to compare two input date string?

What I am basically trying to get here is get file names in a directory for a particular date range.
I would like to get the file data growth over a certain period of time.

When below code ran I am getting error - -sh: 20190929: No such file or directory

Any better tuned code would be helpful.
Code:
unset next_date
unset curr_date
next_date=20190101
curr_date=`date +%Y%m%d`
counter=0
while (  $next_date < $curr_date );
do
date_from=$(date -d "$next_date +$counter days" '+%Y%m%d')
echo $date_from
echo ">>>>>"$counter
((counter+=10))
echo $counter
date_to=$(date -d "$next_date +$counter days" '+%Y%m%d')
echo $date_to
#ls -lrt $(find /home/test/ -type f -newermt $date_from \! -newermt $date_to ) ## list files for specific range 
done


Last edited by Yoda; 09-29-2019 at 09:53 PM..
# 2  
Old 09-29-2019
Shell omitted, bash assumed.


You are using single parentheses for the while condition and thus the < is interpreted as a redirection operator. Try with double parentheses for "Arithmetic Expansion".
Be aware that you created an infinite loop as next_date is not modified within the loop
# 3  
Old 09-29-2019
I have made some correction. Please let me know if there is a better way to do it.


Code:
unset date_to
unset date_from
unset counter=15
date_to=$(date -d 2018-06-15 +"%Y%m%d")    
todate=$(date -d 2018-08-18 +"%Y%m%d")  
counter=0
while [ $date_to -lt $todate ]; #put the loop where you need it
do
 date_from=$(date -d "$date_to +1 days" '+%Y%m%d') 
 date_to=$(date -d "$date_from +$counter days" '+%Y%m%d')
 echo "date from"$date_from
 echo "date to" $date_to 
 ls -lrt $(find . -type f -newermt $date_from \! -newermt $date_to )
done

# 4  
Old 09-30-2019
Now you do not increment counter.?

And what is unset counter=15?

More elegant is
Code:
 find . -type f -newermt $date_from \! -newermt $date_to -exec ls -lrt {} +

The {} + lets find collect all arguments and then run ls -rt with these arguments. This method safely handles file names with special characters.

Last edited by rbatte1; 09-30-2019 at 10:34 AM..
# 5  
Old 10-10-2019
Thanks for your reply. It should have been

Code:
unset counter
counter=15

Have made one more correction
Code:
date_from=$(date -d "$date_to +0 days" '+%Y%m%d')

to get file size for every 15 days of interval
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Date issue

I have posted a code last week about that date format problem, well I have figured out a much lesser coding. #!/usr/bin/bash clear export NLS_LANG=AMERICAN_AMERICA.AL32UTF8 if ; then echo " Incorrect Number of Arguments"; echo " Usage : Main_Script <FROM_DATE>... (1 Reply)
Discussion started by: Chandan_Bose
1 Replies

2. Shell Programming and Scripting

Simple date issue

Hi , Here is the smaller version of the problem. Working individually as command ************************>echo $SHELL /bin/bash ************************>TO_DAY=`date` ************************>echo $TO_DAY Tue Jul 16 02:28:31 EDT 2013 ************************> Not working when... (5 Replies)
Discussion started by: Anupam_Halder
5 Replies

3. Shell Programming and Scripting

Date related issue

Hi, I have TDATE=$(date '+%b %d') That stores "Sep 01" in the TDATE. How I can store "Sep 1"? Thanks in advance (3 Replies)
Discussion started by: dipeshvshah
3 Replies

4. Shell Programming and Scripting

date printing issue

Hello folks Below command shows current date echo `date +%Y-%m-%d` 2010-04-21 How to show one day old date, i want see like 2010-04-20 (1 Reply)
Discussion started by: learnbash
1 Replies

5. Shell Programming and Scripting

Date issue

Hi I need to write a shell script (bash) that takes a date as an in-parameter an decides if its winter or summer time. I have diffrent dates like 20150112 , 200901028 , 200100605 etc. The rule for winter/summer time is : Summer time spans between the last Sunday in march 02:00 to the... (2 Replies)
Discussion started by: duffnix
2 Replies

6. Shell Programming and Scripting

sort date issue

Hi Everyone, # cat b Sat 12 Sep 2009 10:31:49 PM MYT;a;a;a;Sun 13 Sep 2009 11:32:49 AM MYT; Sat 13 Sep 2009 10:31:49 PM MYT;a;a;a;Mon 14 Sep 2009 10:31:49 PM MYT; Sat 14 Sep 2009 10:31:49 PM MYT;a;a;a;Sun 13 Sep 2009 10:31:49 PM MYT; # sort -t';' -k5 b Sat 13 Sep 2009 10:31:49 PM... (8 Replies)
Discussion started by: jimmy_y
8 Replies

7. Solaris

Cron Date issue

Hi, We have Solaris10.2.3 server. If we execute command `date` on Command Line Promt it shows time - >Tue Jun 23 11:35:55 BST 2009 - which is correct However if the command is executed through cron it gives - >Tue Jun 23 10:35:55 ESTEDT 2009 - which is wrong Request you to help me in... (1 Reply)
Discussion started by: sk2304
1 Replies

8. Shell Programming and Scripting

Simple date issue

Hi all, i have used the search already before someone shouts at me and i have seen the 'datecalc' program but this is not working correctly for me in the shell and environment i am using. I am using solaris 10 and bourne shell. I have two dates '07-04-2009' and '05-05-2009'. I just need to... (2 Replies)
Discussion started by: muay_tb
2 Replies

9. UNIX for Advanced & Expert Users

date issue-find prevoius date in a patricular format

Hi , I have written a shell script that takes the current date on the server and stores it in a file. echo get /usr/home/data-`date '+%Y%d'`.xml> /usr/local/sandeep/GetFILE.ini I call this GetFILE.ini file from an sftp program to fetch a file from /usr/home/ as location. The file is in... (3 Replies)
Discussion started by: bsandeep_80
3 Replies

10. Programming

date issue

hi all: I want to create a new file dynamically for each day.how can i do this. eg.. struct tm tm; while(1) { if(tm.tm_hr==0 && tm.tm_min=0 && tm.tm_sec==0) { //create a new file.. ... (3 Replies)
Discussion started by: bankpro
3 Replies
Login or Register to Ask a Question