Subversion Repositories svn.Prod repos

Rev

Rev 3 | Rev 33 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3 Rev 4
1
#!/usr/bin/env bash 
1
#!/usr/bin/env bash 
-
 
2
# =============================================================================
-
 
3
# Create
-
 
4
# name  : Andre Rikkert de Koe          date:   apr 2011
2
# progname : filefind.bash
5
# descr : filefind
-
 
6
#         This is a demo of programming in the bash language.
-
 
7
#         Its part of a project to implement a program to create a directory
-
 
8
#         tree similar to the output of the Unix find program.
-
 
9
# EUID  : Any user who has read access to all the files being searched for.
3
# purpose  : display a directory tree
10
# run   : interactive
-
 
11
#
-
 
12
# Changes
4
#            similar to find
13
# name  :                               date:
-
 
14
# descr : short description
-
 
15
#
-
 
16
# =============================================================================
5
 
17
 
6
# =============================================================================
18
# =============================================================================
7
# Functions
19
# Functions
8
# =============================================================================
20
# =============================================================================
9
 
21
 
10
Usage()
22
Usage()
11
{
23
{
12
	mesg="$1"
24
	mesg="$1"
13
 
25
 
14
	echo "Usage : $progname directory"
26
	echo "Usage : $progname directory"
15
	echo $mesg
27
	echo $mesg
16
}
28
}
17
 
29
 
18
#
30
#
19
# we need local vars to keep the value when called recursively
31
# we need local vars to keep the value when called recursively
20
#
32
#
21
traverse()
33
traverse()
22
{
34
{
23
	local directory="$1"
35
	local directory="$1"
24
 
36
 
25
	local curdir curdir2
37
	local curdir curdir2
26
 
38
 
27
	curdir=$(pwd)
39
	curdir=$(pwd)
28
	cd -- "$directory"
40
	cd -- "$directory"
29
	curdir2=$(pwd)
41
	curdir2=$(pwd)
30
	files=$(ls)
42
	files=$(ls)
31
	for file in $files 
43
	for file in $files 
32
	do
44
	do
33
		pfile=$curdir2/$file	# file including path
45
		pfile=$curdir2/$file	# file including path
34
		if [ -d "$file" -a ! -L "$file" ]
46
		if [ -d "$file" -a ! -L "$file" ]
35
		then
47
		then
36
			echo $pfile
48
			echo $pfile
37
			traverse "$file"
49
			traverse "$file"
38
		else
50
		else
39
			if [ -f $file -o -L $file ]
51
			if [ -f $file -o -L $file ]
40
			then
52
			then
41
				echo "$pfile"
53
				echo "$pfile"
42
			else
54
			else
43
				echo "WARNING: Could not process file $pfile"
55
				echo "WARNING: Could not process file $pfile"
44
			fi
56
			fi
45
		fi	
57
		fi	
46
	done
58
	done
47
	cd -- "$curdir"
59
	cd -- "$curdir"
48
}
60
}
49
 
61
 
50
start_traverse()
62
start_traverse()
51
{
63
{
52
	directory=$1
64
	directory=$1
53
 
65
 
54
	echo $directory
66
	echo $directory
55
	traverse $directory
67
	traverse $directory
56
}
68
}
57
 
69
 
58
# =============================================================================
70
# =============================================================================
59
# MAIN
71
# MAIN
60
# =============================================================================
72
# =============================================================================
61
 
73
 
62
progname=$(basename $0)
74
progname=$(basename $0)
63
if [ $# -eq 1 ]
75
if [ $# -eq 1 ]
64
then
76
then
65
	directory=$1
77
	directory=$1
66
	if [ -d $directory ]
78
	if [ -d $directory ]
67
	then 
79
	then 
68
		start_traverse $directory
80
		start_traverse $directory
69
	else
81
	else
70
		Usage "ERROR: No directory $directory found"
82
		Usage "ERROR: No directory $directory found"
71
	fi
83
	fi
72
else
84
else
73
	Usage "ERRROR: 1 argument expected"
85
	Usage "ERRROR: 1 argument expected"
74
fi
86
fi