bergeel.com bergeel.com
Home -> About Us -> Add Your Link -> Privacy Policy -> Terms of Use -> Add Your Article
Search:   
Get Free Links
 

Health & Therapy

News & Events

Indoor Games

Recreation & Entertainment

Vehicles & Automotive

Outdoor & Sports

Banking & Finance

Realty & Property

Self Help

Software & Networking

Science & Research

Society & Communities

Food & Recipe

Relationship & Lifestyle

Home Family & Garden

Children

Business & Commerce

Careers & Employment

Shopping & Auction

Medicine & Treatment

Art & Culture

Travel & Accommodation

Law & Politics

Academics & Learning

 

Home –› Software & Networking –› Computer Operating Systems
 

Power of the Unix 'for' Loop

 
Author: Praveen Puri
 

If you are a programmer or engineer working in a unix or linux environment, you will probably find the shell 'for' loop to be a handy tool for automating command line tasks.

Here are three examples of the 'for' loop. All the commands are in italics and should be entered on the command line, followed by a carriage return. Note that, after entering the initial 'for' line, you will get the secondary unix prompt (usually a '>').

1. Rename all ".old" files in the current directory to ".bak":

for i in *.old

do

j=`echo $i|sed 's/old/bak/'`

mv $i $j

done


Here, we looped thru all files with extension ".old", setting the variable "i" to be the file name we are currently looping thru. Then, between the "do" and "done", we have the body of the loop. On each pass, we echo the file name ("i") to the unix stream editor sed. Sed replaces the "old" with "bak" (so file "a.old" becomes "a.bak"), and saves the changed name to variable "j". Then, we use the unix move (mv) command to rename the original file (ex. a.old) to the new file (a.bak).



2. Change all instances of "yes" to "no" in all ".txt" files in the current directory. Back up the original files to ".bak".

for i in *.txt

do

j=`echo $i|sed 's/txt/bak/'`

mv $i $j

sed 's/yes/no/' $j > $i

done


In this case, we rename each file from ".txt" to ".bak". Additionally, we use sed a second time, on the contents of the original file (now with a ".bak" extension) and save the modified text back to the original name (with ".txt").



3. Loop thru a text file containing possible file names. If the file is readable, print the first line, otherwise print an error message:

for i in `cat file_list.txt`

do

if test -r $i

then

echo "Here is the first line of file: $i"

sed 1q $i

else

echo "file $i cannot be open for reading."

fi

done


Here, we loop thru the results of a command (in this case "cat"), rather than looping thru files in the directory. We also use an if statement with the "test" command to test for a condition (in this case, whether the file is readable).

 
 
 

Related Articles

 
Information On Selecting And Buying Computer Printers
 
Mobiles phones ?C making your mind up?
 
Business Podcast Marketing Case Study Proves Results
 
Blogging 101
 
Why Using Compatible Printer Inks And Ink Refill Kits Is A Smart Consumer Choice
 
Your Fast Merchant Account Is Waiting!
 
Out on the Road? Now We Can Hook Our Laptops to High-speed, Mobile, Wireless Broadband Internet
 
Learn To Use The Tools You Already Have
 
Writing Quality Articles to Promote Your Business
 
Real Estate SEO (Search Engine Optimization): Making a Smart Choice
 
 
 
   Home -> Privacy Policy -> Terms of Use
All Rights Reserved © 2006 www.bergeel.com