Need some opinion on my scripting. I have some files like below format:-
-rw-r--r-- 1 root root 0 Apr 12 15:56 hostdata_mm-xxx1_2018_04_03.csv
-rw-r--r-- 1 root root 0 Apr 12 15:56 hostdata_mm-xxx1_2018_04_04.csv
-rw-r--r-- 1 root root 0 Apr 12 15:56 hostdata_mm-xxx1_2018_04_05.csv
-rw-r--r-- 1 root root 0 Apr 12 15:56 hostdata_mm-xxx1_2018_04_06.csv
-rw-r--r-- 1 root root 0 Apr 12 15:56 hostdata_mm-xxx1_2018_04_07.csv
-rw-r--r-- 1 root root 0 Apr 12 15:56 hostdata_mm-xxx1_2018_04_08.csv
-rw-r--r-- 1 root root 0 Apr 12 15:56 hostdata_mm-xxx1_2018_04_09.csv
-rw-r--r-- 1 root root 0 Apr 12 15:56 hostdata_mm-xxx1_2018_04_10.csv
I need to have 1 file only which is yesterday's data, so, my script is like this:-
#!/bin/bash
set -x
wd=/root/test
yest=$(date -d "yesterday" '+%Y_%m_%d')
cd $wd
for f in *[0-9][0-9][0-9][0-9]_[0-9][0-9]_[0-9][0-9].csv; do
date=${f#*}
date=${date%.csv}
date=`echo $date | rev`
date=${date:0:10}
date=`echo $date | rev`
(( $date < $yest )) && rm $f
done
However, I got this error
/usr/local/bin/testdelfile: line 15: ((: 2018_04_03: value too great for base (error token is "2018_04_03")
/usr/local/bin/testdelfile: line 15: ((: 2018_04_04: value too great for base (error token is "2018_04_04")
/usr/local/bin/testdelfile: line 15: ((: 2018_04_05: value too great for base (error token is "2018_04_05")
/usr/local/bin/testdelfile: line 15: ((: 2018_04_06: value too great for base (error token is "2018_04_06")
/usr/local/bin/testdelfile: line 15: ((: 2018_04_07: value too great for base (error token is "2018_04_07")
/usr/local/bin/testdelfile: line 15: ((: 2018_04_08: value too great for base (error token is "2018_04_08")
/usr/local/bin/testdelfile: line 15: ((: 2018_04_09: value too great for base (error token is "2018_04_09")
/usr/local/bin/testdelfile: line 15: ((: 2018_04_10: value too great for base (error token is "2018_04_10")
Here is the debug mode
+ for f in '*[0-9][0-9][0-9][0-9]_[0-9][0-9]_[0-9][0-9].csv'
+ date=hostdata_mm-xxx1_2018_04_10.csv
+ date=hostdata_mm-xxx1_2018_04_10
++ echo hostdata_mm-xxx1_2018_04_10
++ rev
+ date=01_40_8102_1kmc-ym_atadtsoh
+ date=01_40_8102
++ echo 01_40_8102
++ rev
+ date=2018_04_10
+ (( 2018_04_10 < 2018_04_12 ))
/usr/local/bin/testdelfile: line 15: ((: 2018_04_10: value too great for base (error token is "2018_04_10")
please advice