home *** CD-ROM | disk | FTP | other *** search
- Path: xanth!mcnc!gatech!ukma!husc6!necntc!ncoast!allbery
- From: kinzler@iuvax.UUCP (Stephen Kinzler)
- Newsgroups: comp.sources.misc
- Subject: v03i069: A Directory Finder
- Message-ID: <8806291918.AA05536@a.cs.uiuc.edu>
- Date: 29 Jun 88 19:16:45 GMT
- Sender: allbery@ncoast.UUCP
- Reply-To: kinzler@iuvax.UUCP (Stephen Kinzler)
- Lines: 146
- Approved: allbery@ncoast.UUCP
-
- Posting-number: Volume 3, Issue 69
- Submitted-by: "Stephen Kinzler" <kinzler@iuvax.UUCP>
- Archive-name: finder
-
- Ever wonder if anyone else on the system has implemented that software
- package? Ever wonder where the subdirectories relevant to something
- are?
-
- Finder is a quick way to answer these questions, without doing a full
- find on the system and without being limited to the directories that
- whereis looks at. Finder itself, however, is limited to a search on
- directory names.
-
- # This is a shell archive.
- # Remove everything above and including the cut line.
- # Then run the rest of the file through sh.
- #----cut here-----cut here-----cut here-----cut here----#
- #!/bin/sh
- # shar: Shell Archiver
- # Run the following text with /bin/sh to create:
- # README
- # finder
- # finder.1
- # mkfindex
- # This archive created: Tue Jun 28 22:45:59 1988
- echo shar: extracting README
- cat << \SHAR_EOF > README
- Ever wonder if anyone else on the system has implemented that software
- package? Ever wonder where the subdirectories relevant to something
- are?
-
- Finder is a quick way to answer these questions, without doing a full
- find on the system and without being limited to the directories that
- whereis looks at. Finder itself, however, is limited to a search on
- directory names.
-
- The finder package is implemented as /bin/sh scripts using find and
- awk. You may want to customize the find command in mkfindex -- for
- example, not to cross mount points (-xdev, if you have it). Perl would
- probably do the job even faster than awk and if anyone translates this,
- I'd like a a copy.
-
- To get an idea of how big the index files (.findex) are, the one at the
- root of our system covering 2.8 gigabytes of disk space in use is about
- 145 kilobytes.
-
- ---------------------------------------------------------------------------
- | .,, >{~) ['} / Stephen Kinzler \ + < : ~.$[~{}== |
- | % > %()}@! ' / kinzler@iuvax.cs.indiana.edu \ '}~{ >;' & )<} |
- | <@;"??{.,':} / {rutgers,gatech,att}!iuvax!kinzler \ &"(&@=+}<+;@) |
- | ]>)"} +{[) / Indiana Univ Dept of Computer Science \ @ }%[^??^&. |
- | ! %% ~!,! / 339 S Lincoln #C; Bloomington, IN 47401 USA \ ,: (>..<*%$ |
- ---------------------------------------------------------------------------
- SHAR_EOF
- echo shar: extracting finder
- cat << \SHAR_EOF > finder
- #! /bin/sh
-
- # finder - find directories
- # searches an index file at the root of each specified directory (default
- # current directory) to find the pathnames of all directories within the
- # specified directories whose name matches the given regular expression
- # see also: mkfindex
- # Stephen Kinzler, kinzler@iuvax.cs.indiana.edu, June 1988
-
- exp=${1?"usage: $0 expression [ directory ... ]"}; shift
-
- for dir in "${@-.}"
- do
- cd "$dir"
- test "$dir" = / && dir=
-
- awk -F/ ' { depth = $1; path[depth] = $2 }
- $2 ~ /'"$exp"'/ { printf "'"$dir"'"
- for (d = 1; d <= depth; d++)
- printf "/%s", path[d]
- printf "\n" }' .findex
- done
- SHAR_EOF
- echo shar: extracting finder.1
- cat << \SHAR_EOF > finder.1
- .TH finder 1-IUCS
- .SH NAME
- finder, mkfindex \- find directories
- .SH SYNTAX
- .B finder
- expression [ directory ... ]
- .br
- .B mkfindex
- [ directory ... ]
- .SH DESCRIPTION
- .B Finder
- searches an index file
- at the root of each specified directory
- (default current directory)
- to find the pathnames of all directories
- within the specified directories
- whose name matches the given regular expression.
- It's report is only as up to date as the index file.
- .PP
- .B Mkfindex
- searches the specified directories
- (default current directory)
- to make an index file of subdirectory names
- at the root of each directory called
- .I .findex.
- The index file is only as complete
- as permissions in the directories allow.
- .SH FILES
- .findex
- .SH "SEE ALSO"
- find(1), whereis(1)
- .SH AUTHOR
- Stephen Kinzler
- .br
- kinzler@iuvax.cs.indiana.edu
- .br
- {rutgers,gatech,att}!iuvax!kinzler
- SHAR_EOF
- echo shar: extracting mkfindex
- cat << \SHAR_EOF > mkfindex
- #! /bin/sh
-
- # mkfindex - make finder index files
- # searches the specified directories (default current directory) to make
- # an index file of subdirectory names at the root of each directory
- # see also: finder
- # Stephen Kinzler, kinzler@iuvax.cs.indiana.edu, June 1988
-
- trap 'rm -f /tmp/findex$$; exit 1' 1 2 15
-
- for dir in "${@-.}"
- do
- cd "$dir"
- test "$dir" = / && dir=
-
- find . -type d -print 2> /dev/null | \
- awk -F/ '{ printf "%d/%s\n", NF - 1, $NF }' > /tmp/findex$$ &&
-
- mv /tmp/findex$$ .findex ||
- echo "$0: $dir findex file still in /tmp/findex$$" 1>&2
- done
- SHAR_EOF
- chmod +x finder mkfindex
- # End of shell archive
- exit 0
-