Subversion Repositories svn.Prod repos

Rev

Rev 4 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

#!/usr/bin/env bash 
# progname : filefind.bash
# purpose  : display a directory tree
#            similar to find

# =============================================================================
# Functions
# =============================================================================

Usage()
{
        mesg="$1"

        echo "Usage : $progname directory"
        echo $mesg
}

#
# we need local vars to keep the value when called recursively
#
traverse()
{
        local directory="$1"

        local curdir curdir2

        curdir=$(pwd)
        cd -- "$directory"
        curdir2=$(pwd)
        files=$(ls)
        for file in $files 
        do
                pfile=$curdir2/$file    # file including path
                if [ -d "$file" -a ! -L "$file" ]
                then
                        echo $pfile
                        traverse "$file"
                else
                        if [ -f $file -o -L $file ]
                        then
                                echo "$pfile"
                        else
                                echo "WARNING: Could not process file $pfile"
                        fi
                fi      
        done
        cd -- "$curdir"
}

start_traverse()
{
        directory=$1

        echo $directory
        traverse $directory
}

# =============================================================================
# MAIN
# =============================================================================

progname=$(basename $0)
if [ $# -eq 1 ]
then
        directory=$1
        if [ -d $directory ]
        then 
                start_traverse $directory
        else
                Usage "ERROR: No directory $directory found"
        fi
else
        Usage "ERRROR: 1 argument expected"
fi