[SLL] find insanity

Russell Evans russell-evans at qwest.net
Tue May 31 22:32:41 PDT 2005


On Tue, 31 May 2005 23:17:05 -0400
"Russell Evans" <russell-evans at qwest.net> wrote:

> The following really works, tested and everything. 

OK, I'm sure it really really works now and Robert
Woodcock's solution looks better and better. OK, its much better than
this.

Thank you
Russell

#!/bin/sh

HELP="$0 -d [ directory path to search ] -n [ direstory name to search
for ]"

getopt -o :d:n 1> /dev/null
for ARG in $@ ; do
  case "$ARG" in
    -d) shift ; DIRECTORY="$1" ; shift ;;
    -n) shift ; NAME="$1" ; shift  ;;
  esac
done

if [ ! $DIRECTORY ] || [ ! $NAME ] ; then
  echo "$HELP" 
  exit 0
fi

for dir in `find $DIRECTORY -type d -name "$NAME" ` ; do 
  DIR=${dir%/*}
  if [ "$ALL_DIR" ] ; then 
    for TEST_DIR in $ALL_DIR ; do 
      DIR_FOUND=`eval echo $DIR | grep $TEST_DIR/` 
      TEST_DIR_FOUND=`eval echo $TEST_DIR | grep $DIR/`
      if [ ! $DIR_FOUND ] && [ ! $TEST_DIR_FOUND ] ; then
        ALL_DIR="$DIR $ALL_DIR"
        break
      elif [ $TEST_DIR_FOUND ] ; then
        MOST_DIR=
        for SOME_DIR in $ALL_DIR ; do
          if [ $SOME_DIR != $TEST_DIR_FOUND ] ; then
            MOST_DIR="$SOME_DIR $MOST_DIR"
          fi
        done 
        ALL_DIR="$DIR $MOST_DIR"
        break
      fi
    done
  else
    ALL_DIR="$DIR"
  fi
done
echo $ALL_DIR 
exit 0 




More information about the linux-list mailing list