If condition to check one file newer than the other - first file name uncertain


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting If condition to check one file newer than the other - first file name uncertain
# 1  
Old 07-06-2009
If condition to check one file newer than the other - first file name uncertain

Dear All,

I'm new to unix scripting. I'm trying to write an utility script which has to check if one file is newer than another one. The condition is I dont know the full name of the first file. I searched google and this forum for any such examples, but couldn't find any or may be I would have missed it.

I wrote this simple check using if, but it is not working.
Code:
if [ /abcd/xyz* -nt /abcd/test.txt ]
then
echo "file found"
else
echo "file not found"

If i give a definite file name, it prints "file found", but when I use an *, even if the file is present it says "file not found"

I will have to use the wildcard charcater * bcoz each time the text following "xyz" is different.

Could anyone please tell me how to fix this.

Your help is much appreciated.

Thanks

Last edited by Yogesh Sawant; 07-10-2009 at 04:27 AM.. Reason: added code tags
# 2  
Old 07-06-2009
Try like this:
Code:
if [ `ls -1 /abcd/xyz*` -nt /abcd/test.txt ]
then
echo "file found"
else
echo "file not found"
fi


Last edited by Yogesh Sawant; 07-10-2009 at 04:25 AM.. Reason: added code tags
# 3  
Old 07-06-2009
Still not working

Hi Ramesh,

Thanks for a quick reply. Now I'm getting the following error message when I run the script.
Code:
0403-012 A test command parameter is not valid.

Thanks

Last edited by Yogesh Sawant; 07-10-2009 at 04:25 AM.. Reason: added code tags
# 4  
Old 07-06-2009
Check whether this will return only 1 file or more than 1 files
Code:
ls -1 /abcd/xyz*


Last edited by Yogesh Sawant; 07-10-2009 at 04:26 AM.. Reason: added code tags
# 5  
Old 07-06-2009
Code:
for f in /abcd/xyz*
do
     [ "$f" -nt /abcd/test.txt ] && echo "file f$ found"
done

Shell handle variables, filegeneration, ... and after shell has expanded those, it will do the command line. Shell will do this for every line. If is also commandline.
When you are using filegeneraton (*, ?, ...), use echo to test. Ex:
Code:
echo rm -r -i  /abcd/xyz*

If echoed line looks good, then run the cmd.
# 6  
Old 07-07-2009
@Ramesh_srk

Yes Ramesh the directory has a lot of files having xyz* files.

@kshji

Thanks a lot. Its working as expected.

Just wanted to clarify one more thing. There are more than 100 xyz* files present in the directory and I'm checking for only today's file which will be one or two and the others are old files. If I use a for loop will it not take more time?

coz I have search for a lot of different files in different directories created for the day. All these directories will have 100 of files with the same starting charcters as the ones I search for. So if I use a "for" loop wont the script take more time and more CPU utilization. Just wanted to know.

In between your explanation of unix treats the variables and conditions is very helpful. Thanks a ton for that too.

Thanks

Last edited by achilles5; 07-07-2009 at 09:57 AM..
# 7  
Old 07-07-2009
I forgot to ask one more thing. If I use a for loop and if the file is not found how would I be able to say that the file not found explicitly as I do in if statement


Thanks a lot for your help guys

Last edited by achilles5; 07-07-2009 at 09:57 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Copy file only if newer

I only want the file copied if it is newer. But it still copies the file? zip -u Ubuntu_Documents.zip ./* cp -u Ubuntu_Documents.zip $DOCS_Backup/Ubuntu_Documents_`date +"%Y-%m-%d-%H-%M"`.zip (5 Replies)
Discussion started by: drew77
5 Replies

2. UNIX for Dummies Questions & Answers

If condition to check one file newer than the other

Dear All, I'm new to unix scripting. I'm trying to write an utility script which has to check if one file is newer than another one. $3 $4 $5 $6 are files .txt. Help me please. for i in $3 $4 $5 $6 do if then echo "$1 is newer than $i" else echo "$i is newer than $1" fi (9 Replies)
Discussion started by: Manueldo
9 Replies

3. Shell Programming and Scripting

Parse tab delimited file, check condition and delete row

I am fairly new to programming and trying to resolve this problem. I have the file like this. CHROM POS REF ALT 10_sample.bam 11_sample.bam 12_sample.bam 13_sample.bam 14_sample.bam 15_sample.bam 16_sample.bam tg93 77 T C T T T T T tg93 79 ... (4 Replies)
Discussion started by: empyrean
4 Replies

4. Shell Programming and Scripting

Perl script, replace file with newer file

Hello, Can you please help me one this: I have two servers: Server A and server B. Every day on 03.00AM in only one on these two servers (randomly)is generated one file, lets say file.txt. I want to copy this file also to the other server. I want to create a perl script that does... (2 Replies)
Discussion started by: arrals_vl
2 Replies

5. Shell Programming and Scripting

Condition to check whether configuration file is empty or not?

CMD=$(find "${Release_Container}" -iname "${Release_Name}"_Release.txt) for i in `cat $CMD` do if ];then cd ${Sandbox_dir} CMD1=$(find "${Sandbox_dir}"/* -iname "${Release_Name}" -type d | awk -F/ '{print $(NF)}' | head -1 ) if ];then echo -e "################### CHECKOUT START... (2 Replies)
Discussion started by: anuragpgtgerman
2 Replies

6. Shell Programming and Scripting

how to find a file then overwrite with a newer version

This should be a simple script, but can't find one with google search. I just need to find the file that is in many directories, then overwrite that file with a newer version i.e. find file.jar then overwrite with /root/file.jar All I get in searches is substitute text with new test inside... (1 Reply)
Discussion started by: haircat
1 Replies

7. Solaris

Before I delete any file in Unix, How can I check no open file handle is pointing to that file?

I know how to check if any file has a unix process using a file by looking at 'lsof <fullpath/filename>' command. I think using lsof is very expensive. Also to make it accurate we need to inlcude fullpath of the file. Is there another command that can tell if a file has a truely active... (12 Replies)
Discussion started by: kchinnam
12 Replies

8. Shell Programming and Scripting

Check a condition in cronjob to execute a sh file

Hi, I need to execute a crontab based on a condition where one SH file should be executed only based on the output of a file in a folder. I have written the following cron job which is not working. 00 01 * * * read a < /px/batch/reslut.txt && && sh /px/batch/check.sh where my... (2 Replies)
Discussion started by: shanth_chandra
2 Replies

9. Shell Programming and Scripting

How to script to find the newer date in a text file?

Hi, I have a text file, foo.txt, it looks something like below. In the file there is a line that gives the date in the form of: Mon Jun 15 11:09:31 2008. I need to find which date is the newest and then store certain details of that list data to another file. So, in this sample text file, I... (6 Replies)
Discussion started by: boolean2222
6 Replies

10. Shell Programming and Scripting

script to check for a condition inside a file

Hi I am writing a script file which sends the log files along with their size in a folder named log to a file called temp.log using the following cmd: ls -st 190_GSTV_HUX_003QISCGSK026** >> /home/user/temp.log the temp.log looks like this: 16 190_GSTV_HUX_003QISCGSK026_message070321.log ... (11 Replies)
Discussion started by: kiran1112
11 Replies
Login or Register to Ask a Question