Rev 43 | Blame | Compare with Previous | Last modification | View Log | RSS feed
#!/usr/bin/env bash
# =============================================================================
# Create
# name : Andre Rikkert de Koe date: Apr 2011
# descr : filefind
# This is a demo of programming in the Bash language.
# Its part of a project to implement a program to create a directory
# tree similar to the output of the Unix find program.
# EUID : Any user who has read access to all the files being searched for.
# run : interactive
#
# Changes
# name : date:
# descr : short description
#
# =============================================================================
# =============================================================================
# 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 -a)
for file in $files
do
pfile=$curdir2/$file # file including path
if [ "$file" != ".." -a "$file" != "." ]
then
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
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 a directory : $directory"
fi
else
Usage "ERROR: 1 argument expected"
fi