Will this work?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Will this work?
# 1  
Old 07-15-2003
Will this work?

I'm trying to check if files already exist in a directory. They have the same basename (exsyctr1), but 4 different extensions. If the files exist, then I make backups of them, then copy them from another directory ($livecomp/data) to the current one ($copycomp/data). If they don't exist, just perform the copy.

Will the script below work?

Code:
  if [ -f $copycomp/data/exsyctr1.* ]
  then
	echo "Changing to $copycomp/data/"
	cd $copycomp/data
	echo "Backing up existing files"
	cp exsyctl1.* *.bak
	echo "Copying from $livecomp/data/ to $copycomp/data/"
	cp $livecomp/data/exsyctr1.* .
  else
	echo "Copying from $livecomp/data/ to $copycomp/data/"
	cp $livecomp/data/exsyctr1.* .
  fi

# 2  
Old 07-15-2003
I would use a loop like the following, but it's just one possible way I suppose...
Code:
echo "Changing to $copycomp/data/"
cd $copycomp/data

for FILE in `ls $copycomp/data/exsyctr1.*`
do
  if [ -f $FILE ]; then
    echo "Backing up existing files"
    cp $FILE ${FILE%.*}.bak
  fi
done

echo "Copying from $livecomp/data/ to $copycomp/data/"
cp $livecomp/data/exsyctr1.* .

If you're not using KSH, then replace "cp $FILE ${FILE%.*}.bak" with "cp $FILE `echo $FILE | sed 's/\([^.]*\).*/\1/'`.bak"

If you're serious about finding out different ways to do things, read this post. Maybe you'll like one way more than another.
# 3  
Old 07-18-2003
Question

Only the first file is renamed, Oombera... Smilie
# 4  
Old 07-18-2003
ignore that, fixed it Smilie

thanks oombera
# 5  
Old 07-24-2003
In oombera's solution, the "if" is redundant, since `ls ...` only returned the files that were there, not the ones that weren't.

Assuming the "extensions", i.e., the filename endings after a period, are fixed, my solution would be something like this:
Code:
cd $copycomp/data
for ext in a b c d ; do
    if [ -f exsyctr1.$ext ] ; then
        # Create backup file per oombera, notice shell differences.
	cp $livecomp/exsyctrl.$ext .
    fi
done

# 6  
Old 07-24-2003
Well, it might not be redundant if the particular $copycomp/data/exsyctr1.* the loop is currently testing happens to be a directory instead of a regular file. Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. IP Networking

Discussion at work, would a router work pluging a cable in wan1 and lan1?

hi all. and sorry for the random question, but this sparkled a raging flame-war at work and i want more points of view situation a router, with linux of some sort, dhcp client requesting for ip in wan1 (as usual with wan ports) dhcp server listening in lan1, and assigning ip (as usual... (9 Replies)
Discussion started by: broli
9 Replies

2. Shell Programming and Scripting

My script work on Linux but not work in sunos.

My script work on Linux but not work in sun os. my script. logFiles="sentLog1.log sentLog2.log" intial_time="0 0" logLocation="/usr/local/tomcat/logs/" sleepTime=600 failMessage=":: $(tput bold)Log not update$(tput rmso) = " successMessage="OK" arr=($logFiles)... (7 Replies)
Discussion started by: ooilinlove
7 Replies

3. IP Networking

NIC will not work, but it did work.

I have a client machine that was built and loaded with SCO UNIX 2.1.3, (yes it is old). The machine worked fine on the closed network that I tested on in my shop. I then had to change it to the network that it would be connected to. Below is the host file, router and subnet mask file that I usually... (0 Replies)
Discussion started by: NC user
0 Replies

4. Shell Programming and Scripting

ls -d does not work

Hi falks, I need to dispaly a list of only directories . As it written in the manual ,the command to do it is 'ls -d'. When i issue 'ls -d' i'm getting: tornado.orca.ent:DB10g :/home/oracle/Create_Database > ls -d . Is anyone have any idea why id does not display directories ,or maybe... (11 Replies)
Discussion started by: nir_s
11 Replies

5. Linux

Come and work for me! (UK)

********nothing too see here!!!****** (2 Replies)
Discussion started by: TonyChapman
2 Replies

6. Linux

How does it work?

Can anyone explain how Graphic LCD (CSTN / STN) work in Unix... From Graphic file thro driver code to display....? Thanks (1 Reply)
Discussion started by: nat123
1 Replies

7. UNIX for Dummies Questions & Answers

cant get this to work

whoami | grep < $1 | echo $1 trying to write a script that finds out who the user is and then takes occurences of that username from a file that is passed as an argument and then displays it (6 Replies)
Discussion started by: iago
6 Replies

8. UNIX for Advanced & Expert Users

how does this work....

1|foo|bar 2|usa|ll 3|usa|vg 4|usa|vg 5|bar|vg 6|usa|vg 7|usa|ll 8|uk|nn 9|foo|manu|bar 10|uk|bb 11|foo|mm 12|kuwait|jkj 13|kuwait|mm 14|dubai|hh awk '/foo/,/bar/' test_file1----command run at the prompt output should have been the first 3 lines...... 1|foo|bar (1 Reply)
Discussion started by: bishweshwar
1 Replies

9. UNIX for Dummies Questions & Answers

Script doesn't work, but commands inside work

Howdie everyone... I have a shell script RemoveFiles.sh Inside this file, it only has two commands as below: rm -f ../../reportToday/temp/* rm -f ../../report/* My problem is that when i execute this script, nothing happened. Files remained unremoved. I don't see any error message as it... (2 Replies)
Discussion started by: cheongww
2 Replies

10. UNIX for Advanced & Expert Users

how does this work???

can someone tell me the meaning of this commnad, If you want to see a grand total of CPU time for a program when it finishes running, you can use the time command. At the Unix prompt, enter: time java myprog Replace myprog with the name of the program you are running. The following is an... (1 Reply)
Discussion started by: ldpathak
1 Replies
Login or Register to Ask a Question