Power of the Unix 'for' Loop Keyword Discovery
Get our FREE SEO Guide
Subscribe to our newsletter to receive useful SEO tips, tricks, strategies, free ebooks that are available only to our subscribers and get this amazing SEO guide for free!

Your email is safe and will NEVER be shared with any other parties. And of course, you can unsubscribe at any time.

Name:
Email:
SEO Elite - #1 SEO Software

Who Else Wants To Finally Get A #1 Google Ranking In As Little As 7 Days... And Drive A Minimum Of 789 Unique Visitors To Your Websites Per Day?

Search engine domain position PHP Script

This script checks the search engines for a specific keyword and displays the position of given domains in the search results

Only $9.95
Coming soon ...


Self SEO Store  
SEO forum
Website templates
Flash templates
Best hosting reviews.
Free Internet & IT Magazines.
Articles archive

Submit your article

Register
Login

Search
XML news feeds
Free RSS news reader
Contact


AddThis Feed Button

Power of the Unix 'for' Loop

Posted by Praveen Puri on: 2006-07-04 03:07:28

Self SEO > Hardware Articles


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).

Praveen Puri has been a unix programmer for the last 16 years. He has a blog called Unix Simplicity that is dedicated to unix shell scripting and awk programming.




Print this article    Tell a friend
Post New Comment

This site does not allow anonymous comments. Registered members can login to participate. Registration is free and takes only a few seconds