Standardizing the time in the script

Hi,

I have created a script to generate a report 3 times every month.
Part of the script transfers files from one directory to the other.
These files span from a certain time range, like from the 2nd onwards, 8th onwards, and 16th onwards.
Therefore, for the first report of the month, if the team requests to start generating the report on the 4th, then I will have to copy files dated 2nd of the month to 4th of the month to another directory.

This is the command I use to transfer the file; eg for Jun :

mkdir -p /var/log/exim4/$YEAR/$DIR1
find . -type f -name 'mainlog.*' -newermt "Jun 2, 2017" ! -newermt "Jun 4, 2017" -exec cp {} $YEAR/$DIR1/ \;

What if I want this pattern every month? How and what do I substitute Jun 2, 2017 and Jun 4, 2017 with?

---------- Post updated at 06:35 PM ---------- Previous update was at 05:03 PM ----------

I know that we can use the -d option for date to display time described by STRING, not `now'.

Is it possible to use this option to display the date as 2nd of the month every month?

Example using this option :

date +"%Y-%m-%d" -d "8 days ago"

Have you considered getting the year & month from the date command and forcing the day as a literal?

I'm not really clear what you are trying to achieve, but would this help?

date +"%Y-%m-02" -d "8 days ago"

If you are actually trying to use find, then if you can get the date in the correct format, then you can create a reference file to work from. Have a look at this and see if you can adjust it to your needs:-

ref_date_start=($date +%Y%m020000 -d "8 days ago")
ref_date_end=($date +%Y%m020000 -d "3 days ago")

touch -mt $ref_date_start /tmp/start_ref_file
touch -mt $ref_date_end /tmp/end_ref_file

find /path/to/search -newer /tmp/start_ref_file ! -newer /tmp/end_ref_file

I hope that this ends, but my apologies, sir/madam, if I've completely got confused. :confused:
Robin

Hi,

Thanks for your reply.
The info you gave on using "date +"%Y-%m-02" works. Means it shows the date as 2017-07-02.

I tested out running the command like this, and it seems like it lists down files :

root@L28mustang:/var/log/exim4# SECOND=$(date +"%Y-%m-02")
root@L28mustang:/var/log/exim4# NOW=$(date +"%Y-%m-%d")
root@L28mustang:/var/log/exim4# find . -type f -name 'mainlog.*' -newermt $SECOND ! -newermt $NOW -ls
5767230 3552 -rw-r-----   1 Debian-exim adm       3636932 Jul  8 06:25 ./mainlog.6.gz
5767319 2012 -rw-r-----   1 Debian-exim adm       2056368 Jul 12 06:25 ./mainlog.2.gz
5767260 1044 -rw-r-----   1 Debian-exim adm       1066100 Jul  7 06:25 ./mainlog.7.gz
5769152 15188 -rw-r-----   1 Debian-exim adm      15552467 Jul  2 06:25 ./mainlog.12.gz
6031883  900 -rw-r-----   1 Debian-exim adm        919512 Jul  9 06:27 ./2017/Jul2017_Blast_BC07/mainlog.2.gz
6031884 7476 -rw-r-----   1 Debian-exim adm       7655054 Jul 10 06:25 ./2017/Jul2017_Blast_BC07/mainlog.1
6031887    0 -rw-r--r--   1 root     adm             0 Jul 10 15:43 ./2017/Jul2017_Blast_BC07/mainlog.2.filtered
6031882 3552 -rw-r-----   1 Debian-exim adm       3636932 Jul  8 06:25 ./2017/Jul2017_Blast_BC07/mainlog.3.gz
6031886 16892 -rw-r--r--   1 root     adm      17295300 Jul 10 15:42 ./2017/Jul2017_Blast_BC07/mainlog.3.filtered
6031889    0 -rw-r--r--   1 root     adm             0 Jul 10 15:43 ./2017/Jul2017_Blast_BC07/mainlog.filtered
6031888    0 -rw-r--r--   1 root     adm             0 Jul 10 15:43 ./2017/Jul2017_Blast_BC07/mainlog.1.filtered
6031490 4496 -rw-r-----   1 Debian-exim adm       4602072 Jul  4 06:32 ./2017/Jul2017_Blast_BC01_old/mainlog.2.gz
6031489 24720 -rw-r-----   1 Debian-exim adm      25310292 Jul  5 06:25 ./2017/Jul2017_Blast_BC01_old/mainlog.1
6031493 91072 -rw-r--r--   1 root     adm      93253403 Jul  5 18:53 ./2017/Jul2017_Blast_BC01_old/mainlog.4.filtered
6031495    4 -rw-r--r--   1 root     adm           734 Jul  5 18:54 ./2017/Jul2017_Blast_BC01_old/mainlog.2.filtered
6031492 15188 -rw-r-----   1 Debian-exim adm      15552467 Jul  2 06:25 ./2017/Jul2017_Blast_BC01_old/mainlog.4.gz
6031491 14768 -rw-r-----   1 Debian-exim adm      15120212 Jul  3 06:32 ./2017/Jul2017_Blast_BC01_old/mainlog.3.gz
6031494 72088 -rw-r--r--   1 root     adm      73810983 Jul  5 18:53 ./2017/Jul2017_Blast_BC01_old/mainlog.3.filtered
6031497    0 -rw-r--r--   1 root     adm             0 Jul  5 18:55 ./2017/Jul2017_Blast_BC01_old/mainlog.filtered
6031496    0 -rw-r--r--   1 root     adm             0 Jul  5 18:55 ./2017/Jul2017_Blast_BC01_old/mainlog.1.filtered
6031677 4132 -rw-r-----   1 Debian-exim adm       4228434 Jul  5 06:25 ./2017/Jul2017_Blast_BC01/mainlog.2.gz
6031678 19172 -rw-r-----   1 Debian-exim adm      19629131 Jul  6 06:25 ./2017/Jul2017_Blast_BC01/mainlog.1
6031681 73588 -rw-r--r--   1 root     adm      75351621 Jul  6 13:03 ./2017/Jul2017_Blast_BC01/mainlog.4.filtered
6031683    0 -rw-r--r--   1 root     adm             0 Jul  6 13:04 ./2017/Jul2017_Blast_BC01/mainlog.2.filtered
6031675 14768 -rw-r-----   1 Debian-exim adm      15120212 Jul  3 06:32 ./2017/Jul2017_Blast_BC01/mainlog.4.gz
6031676 4496 -rw-r-----   1 Debian-exim adm       4602072 Jul  4 06:32 ./2017/Jul2017_Blast_BC01/mainlog.3.gz
6031682    4 -rw-r--r--   1 root     adm           734 Jul  6 13:04 ./2017/Jul2017_Blast_BC01/mainlog.3.filtered
6031685    0 -rw-r--r--   1 root     adm             0 Jul  6 13:05 ./2017/Jul2017_Blast_BC01/mainlog.filtered
6031680 91068 -rw-r--r--   1 root     adm      93253403 Jul  6 13:02 ./2017/Jul2017_Blast_BC01/mainlog.5.filtered
6031684    0 -rw-r--r--   1 root     adm             0 Jul  6 13:05 ./2017/Jul2017_Blast_BC01/mainlog.1.filtered
6031674 15188 -rw-r-----   1 Debian-exim adm      15552467 Jul  2 06:25 ./2017/Jul2017_Blast_BC01/mainlog.5.gz
5769926  860 -rw-r-----   1 Debian-exim adm        878779 Jul 10 06:25 ./mainlog.4.gz
5769158 14768 -rw-r-----   1 Debian-exim adm      15120212 Jul  3 06:32 ./mainlog.11.gz
5767229  744 -rw-r-----   1 Debian-exim adm        758754 Jul 11 06:25 ./mainlog.3.gz
5769571 4496 -rw-r-----   1 Debian-exim adm       4602072 Jul  4 06:32 ./mainlog.10.gz
5769395 4132 -rw-r-----   1 Debian-exim adm       4228434 Jul  5 06:25 ./mainlog.9.gz
5767377 3144 -rw-r-----   1 Debian-exim adm       3217892 Jul  6 06:25 ./mainlog.8.gz
5767516  900 -rw-r-----   1 Debian-exim adm        919512 Jul  9 06:27 ./mainlog.5.gz
root@L28mustang:/var/log/exim4# 

To confirm properly if indeed the latest file for the current date is listed, I run this command :

root@L28mustang:/var/log/exim4# find . -type f -name 'mainlog.*' -newermt $NOW -ls
5769924 27424 -rw-r-----   1 Debian-exim adm      28074686 Jul 13 06:25 ./mainlog.1
root@L28mustang:/var/log/exim4# 

It lists down a file with the current date, however when I check how many files with the current date exist :

-rw-r-----  1 Debian-exim adm 28074686 Jul 13 06:25 mainlog.1
-rw-r-----  1 Debian-exim adm 13412149 Jul 13 17:40 mainlog
root@L28mustang:/var/log/exim4#

There are 2 files. Why does it not list down the 2nd file with the time 17:40 in the former command?