A Bourne shell script that loops through all files in the current directory

Linux shell script for loop FAQ: Can you share an example of a Linux shell script for loop, for instance, to do something for every file in the current directory?

Sure. Here’s the core part of a shell script that you’ll find on any Unix, Linux, and Mac OS X computer I have ever worked on. The general process of this script is “for every file in the current directory do XYZ.”

The specific instance of the shell script shown below says, “For every JSP file in the current directory, run the sed script named pp.sed, writing the output to a temporary file, then moving that temporary file back to the original filename”:

#!/bin/sh

for i in `ls *.jsp`
do
    echo "Editing $i ..."
    sed -f pp.sed < $i  > $i.tmp
    mv $i.tmp $i
done

This sample shell script actually demonstrates several different shell programming techniques:

  • How to create a for loop in a shell script.
  • How to use the backtick operator to execute the ls *.jsp command inside another command.
  • How to run sed in a mode where it reads a file containing sed commands.

The sed script that I run here modifies a bunch of poorly formatted (but consistent) HTML. Here’s the link to that sed script.

Linux Bash shell script for loop example

I hope this Linux/Bash shell script for loop example has been helpful. For more shell script for loop examples just search this website, or look at the “Related” block on this web page.