Finding latest file in dir but getting syntax errors


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Finding latest file in dir but getting syntax errors
# 1  
Old 05-17-2017
Code Finding latest file in dir but getting syntax errors

I believe there are couple of syntax issues in my script, couldn't find them Smilie
can someone help me with fixing it to make it work.

Code:
cd /abcde/
#get the latest filename excluding subdirs
filename=`ls -ltr | grep ^- | tail -1 | awk '{print $8}'`

#get system date and file timestamp and storing in variables
sysDate="$(date)"
fileDate="$(date -r $filename)"

#get day of sys and file dates
sysdateDay= `$(date +%d)`
filedateDay= `$(date -r $filename +%d)`

#get hour of sys and file dates
sysdateHour= `$(date +%H)`
filedateHour= `$(date -r $filename +%H)`

#find difference of days and hours in sys and file dates
daydiff= 'expr $day - $day2'
hourdiff= 'expr $hour - $hour2'

echo "Current date : $sysDate"
echo "File date    : $fileDate"

#checking if day is same but hour difference is more than 2 hrs
if [ $daydiff -eq "0" && $hourdiff -ge "2" ]
then
    echo "the newest file is more than 2 hours old...."

#checking if there is a day difference of 1 or more days
else if [ $daydiff -ge "1" ]
    echo  "the newest file is more than 24 hours old...."

#last file is less than 2 hours old
else
    echo "new files received within 2 hours"
fi

exit 0

# 2  
Old 05-17-2017
consider a shorter bit of arithmetic:
Code:
# the the age of the file using epoch seconds
fileage=$(( $(date +%s) - $(date -r min.h.bak +%s) ))
# age expressed as hours:
echo "hours = $(( $fileage / 3600 ))"
# age in days:
echo "days = $(( $fileage / 86400 ))"

You errors have a space between the variable name and equal symbol in an assign statement
Code:
var ="bad"
var= "bad"
var = "bad"
# no spaces either side of the equals symbol.
var="correct"

You have a logic problem using %H for hours - file going over midnight i.e., yesterday at 2300 and today at 0106 will give you a negative number

Last edited by jim mcnamara; 05-17-2017 at 08:02 AM..
This User Gave Thanks to jim mcnamara For This Post:
# 3  
Old 05-17-2017
Can you send the error message?

Thanks

G
# 4  
Old 05-17-2017
Question

Quote:
Originally Posted by jim mcnamara
consider a shorter bit of arithmetic:
Code:
# the the age of the file using epoch seconds
fileage=$(( $(date +%s) - $(date -r min.h.bak +%s) ))
# age expressed as hours:
echo "hours = $(( $fileage / 3600 ))"
# age in days:
echo "days = $(( $fileage / 86400 ))"

You errors have a space between the variable name and equal symbol in an assign statement
Code:
var ="bad"
var= "bad"
var = "bad"
# no spaces either side of the equals symbol.
var="correct"

You have a logic problem using %H for hours - file going over midnight i.e., yesterday at 2300 and today at 0106 will give you a negative number
Does min.h.bak mean the filename in your suggestion ?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Help with finding the latest modified version of a file within directories

I am trying to look into multiple directories and pluck out the latest version of a specific file, regardless of where it sits within the directory structure. Ex: The file is a .xls file and could have a depth within the directory of anywhere from 1-5 Working directory - Folder1... (6 Replies)
Discussion started by: co21ss
6 Replies

2. UNIX for Dummies Questions & Answers

[Solved] Finding the latest file in a directory

Hi All, I am using the below command to find the latest file in a dir: ls -tr $v_sftphomedir/$v_sourcefile |tail -1 or ls -t1 $v_sftphomedir/$v_sourcefile |head -1 and the outpur returned is below: /home/cobr_sftp/var/controllingload/Backup/Dbrwds_Div_1796050246.txt I need only the... (5 Replies)
Discussion started by: abhi_123
5 Replies

3. UNIX for Dummies Questions & Answers

Finding latest dir based on it's name (yyyymmdd)

Hi Folks, As part of my application I need to find out what the latest directory based on the name of that directory (not it's file system timestamp). Example: I have a directory which contains below directories (each of while contains files etc) 20120000/ 20120000/ latest (symbolic link to... (5 Replies)
Discussion started by: DOWD_R
5 Replies

4. Shell Programming and Scripting

Finding errors in log file only in last 10 minutes

Hi there, I have a log file that I need to check every 10 minutes to find if a specific error exists but only in that 10 minute period. The reason is that the log is quite large, and will frequently contain these errors, so I only want alerting if it in the last 10 minutes - I don't want... (3 Replies)
Discussion started by: paul_vf
3 Replies

5. Shell Programming and Scripting

Finding the Latest file in a Dir

Hi Everyone, I am writing a shell script and I am struck here: I need to find the latest file in a directory depending upon the date. For example: The files in the directory are: Filename_bo_20110619 Filename_bo_20110620 Filename_bo_20110621 Filename_bo_20110622 So here, I want... (2 Replies)
Discussion started by: filter
2 Replies

6. Shell Programming and Scripting

RSYNC syntax for pushing file with latest system date

OK, I am a little new to AIX 5.3 and also to scripting. I have a shell script that I wrote and am having difficulty pushing specific files by the system date. Here is my script: #!/usr/bin/sh RSYNC=/usr/local/bin/rsync SSH=/usr/local/bin/ssh KEY=<path> somekey.key RUSER=mike... (4 Replies)
Discussion started by: tfort73
4 Replies

7. Red Hat

To find the LATEST file from a dir on REMOTE machine and SCP to local machine?

Hi All, URGENT - Please help me form a scipt for this: I need the LATEST file from a dir on REMOTE machine to be SCP'd to a dir on local machine. (and I need to execute this from local server) I know that the below cmd is used to find the LATEST file from a dir. But this command is not... (3 Replies)
Discussion started by: me_ub
3 Replies

8. Shell Programming and Scripting

Loop through files in dir, omit file with latest date

I want to loop through files in a directory but omit the file with the latest date in my list of files. How would I accomplish this? Thanks (2 Replies)
Discussion started by: stringzz
2 Replies

9. Shell Programming and Scripting

finding latest file having timestamp on it.....

Hi guys, I have a directory in UNIX having files with the below format, i need to pickup the latest file having recent timestamp embedded on it, then need to rename it to a standard file name. Below is the file format: filename_yyyymmdd.csv, i need to pick the latest and move it with the... (1 Reply)
Discussion started by: kaushik25
1 Replies

10. UNIX for Dummies Questions & Answers

finding latest file in Unix

Hi, i want to search a file in the dir , if file exists for todays date print the message that file found or if file does not exist for todays date/ if file not found i want to display message saying that file not found. How to do this. Thx for your help. (2 Replies)
Discussion started by: nick12
2 Replies
Login or Register to Ask a Question