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 |