home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume3 / finder < prev    next >
Internet Message Format  |  1989-02-03  |  5KB

  1. Path: xanth!mcnc!gatech!ukma!husc6!necntc!ncoast!allbery
  2. From: kinzler@iuvax.UUCP (Stephen Kinzler)
  3. Newsgroups: comp.sources.misc
  4. Subject: v03i069: A Directory Finder
  5. Message-ID: <8806291918.AA05536@a.cs.uiuc.edu>
  6. Date: 29 Jun 88 19:16:45 GMT
  7. Sender: allbery@ncoast.UUCP
  8. Reply-To: kinzler@iuvax.UUCP (Stephen Kinzler)
  9. Lines: 146
  10. Approved: allbery@ncoast.UUCP
  11.  
  12. Posting-number: Volume 3, Issue 69
  13. Submitted-by: "Stephen Kinzler" <kinzler@iuvax.UUCP>
  14. Archive-name: finder
  15.  
  16. Ever wonder if anyone else on the system has implemented that software
  17. package?  Ever wonder where the subdirectories relevant to something
  18. are?
  19.  
  20. Finder is a quick way to answer these questions, without doing a full
  21. find on the system and without being limited to the directories that
  22. whereis looks at.  Finder itself, however, is limited to a search on
  23. directory names.
  24.  
  25. #    This is a shell archive.
  26. #    Remove everything above and including the cut line.
  27. #    Then run the rest of the file through sh.
  28. #----cut here-----cut here-----cut here-----cut here----#
  29. #!/bin/sh
  30. # shar:    Shell Archiver
  31. #    Run the following text with /bin/sh to create:
  32. #    README
  33. #    finder
  34. #    finder.1
  35. #    mkfindex
  36. # This archive created: Tue Jun 28 22:45:59 1988
  37. echo shar: extracting README
  38. cat << \SHAR_EOF > README
  39. Ever wonder if anyone else on the system has implemented that software
  40. package?  Ever wonder where the subdirectories relevant to something
  41. are?
  42.  
  43. Finder is a quick way to answer these questions, without doing a full
  44. find on the system and without being limited to the directories that
  45. whereis looks at.  Finder itself, however, is limited to a search on
  46. directory names.
  47.  
  48. The finder package is implemented as /bin/sh scripts using find and
  49. awk.  You may want to customize the find command in mkfindex -- for
  50. example, not to cross mount points (-xdev, if you have it).  Perl would
  51. probably do the job even faster than awk and if anyone translates this,
  52. I'd like a a copy.
  53.  
  54. To get an idea of how big the index files (.findex) are, the one at the
  55. root of our system covering 2.8 gigabytes of disk space in use is about
  56. 145 kilobytes.
  57.  
  58. ---------------------------------------------------------------------------
  59. |  .,, >{~)   ['} /           Stephen Kinzler           \ + < : ~.$[~{}== |
  60. | %  > %()}@!  ' /     kinzler@iuvax.cs.indiana.edu      \ '}~{ >;' & )<} |
  61. | <@;"??{.,':}  /   {rutgers,gatech,att}!iuvax!kinzler    \ &"(&@=+}<+;@) |
  62. |  ]>)"}  +{[) /   Indiana Univ Dept of Computer Science   \  @ }%[^??^&. |
  63. | !  %% ~!,!  / 339 S Lincoln #C; Bloomington, IN 47401 USA \ ,: (>..<*%$ |
  64. ---------------------------------------------------------------------------
  65. SHAR_EOF
  66. echo shar: extracting finder
  67. cat << \SHAR_EOF > finder
  68. #! /bin/sh
  69.  
  70. # finder - find directories
  71. # searches an index file at the root of each specified directory (default
  72. # current directory) to find the pathnames of all directories within the
  73. # specified directories whose name matches the given regular expression
  74. # see also: mkfindex
  75. # Stephen Kinzler, kinzler@iuvax.cs.indiana.edu, June 1988
  76.  
  77. exp=${1?"usage: $0 expression [ directory ... ]"}; shift
  78.  
  79. for dir in "${@-.}"
  80. do
  81.     cd "$dir"
  82.     test "$dir" = / && dir=
  83.  
  84.     awk -F/ '       { depth = $1; path[depth] = $2 }
  85.     $2 ~ /'"$exp"'/ { printf "'"$dir"'"
  86.                       for (d = 1; d <= depth; d++)
  87.                           printf "/%s", path[d]
  88.                       printf "\n" }' .findex
  89. done
  90. SHAR_EOF
  91. echo shar: extracting finder.1
  92. cat << \SHAR_EOF > finder.1
  93. .TH finder 1-IUCS
  94. .SH NAME
  95. finder, mkfindex \- find directories
  96. .SH SYNTAX
  97. .B finder
  98. expression [ directory ... ]
  99. .br
  100. .B mkfindex
  101. [ directory ... ]
  102. .SH DESCRIPTION
  103. .B Finder
  104. searches an index file
  105. at the root of each specified directory
  106. (default current directory)
  107. to find the pathnames of all directories
  108. within the specified directories
  109. whose name matches the given regular expression.
  110. It's report is only as up to date as the index file.
  111. .PP
  112. .B Mkfindex
  113. searches the specified directories
  114. (default current directory)
  115. to make an index file of subdirectory names
  116. at the root of each directory called
  117. .I .findex.
  118. The index file is only as complete
  119. as permissions in the directories allow.
  120. .SH FILES
  121.  .findex
  122. .SH "SEE ALSO"
  123. find(1), whereis(1)
  124. .SH AUTHOR
  125. Stephen Kinzler
  126. .br
  127. kinzler@iuvax.cs.indiana.edu
  128. .br
  129. {rutgers,gatech,att}!iuvax!kinzler
  130. SHAR_EOF
  131. echo shar: extracting mkfindex
  132. cat << \SHAR_EOF > mkfindex
  133. #! /bin/sh
  134.  
  135. # mkfindex - make finder index files
  136. # searches the specified directories (default current directory) to make
  137. # an index file of subdirectory names at the root of each directory
  138. # see also: finder
  139. # Stephen Kinzler, kinzler@iuvax.cs.indiana.edu, June 1988
  140.  
  141. trap 'rm -f /tmp/findex$$; exit 1' 1 2 15
  142.  
  143. for dir in "${@-.}"
  144. do
  145.     cd "$dir"
  146.     test "$dir" = / && dir=
  147.  
  148.     find . -type d -print 2> /dev/null | \
  149.         awk -F/ '{ printf "%d/%s\n", NF - 1, $NF }' > /tmp/findex$$ &&
  150.  
  151.     mv /tmp/findex$$ .findex ||
  152.         echo "$0: $dir findex file still in /tmp/findex$$" 1>&2
  153. done
  154. SHAR_EOF
  155. chmod +x finder mkfindex
  156. #    End of shell archive
  157. exit 0
  158.