zipgrep
上传用户:andy_li
上传日期:2007-01-06
资源大小:1019k
文件大小:1k
源码类别:

压缩解压

开发平台:

MultiPlatform

  1. #! /bin/sh
  2. # zipgrep: searches the given zip members for a string or pattern
  3. # This shell script assumes that you have installed UnZip.
  4. pat=""
  5. opt=""
  6. while test $# -ne 0; do
  7.   case "$1" in
  8.   -e | -f) opt="$opt $1"; shift; pat="$1";;
  9.   -*)      opt="$opt $1";;
  10.    *)      if test -z "$pat"; then
  11.              pat="$1"
  12.            else
  13.              break;
  14.            fi;;
  15.   esac
  16.   shift
  17. done
  18. if test $# = 0; then
  19.   echo "usage: `basename $0` [egrep_options] pattern zipfile [members...]"
  20.   echo searches the given zip members for a string or pattern
  21.   exit 1
  22. fi
  23. zipfile="$1"; shift
  24. list=0
  25. silent=0
  26. opt=`echo "$opt" | sed -e 's/ //g' -e 's/-//g'`
  27. case "$opt" in
  28.   *l*) list=1; opt=`echo $opt | sed s/l//`
  29. esac
  30. case "$opt" in
  31.   *h*) silent=1
  32. esac
  33. if test -n "$opt"; then
  34.   opt="-$opt"
  35. fi
  36. res=0
  37. for i in `unzip -Z1 "$zipfile" ${1+"$@"}`; do
  38.   if test $list -eq 1; then
  39.     unzip -p-L "$zipfile" "$i" | egrep $opt "$pat" > /dev/null && echo $i
  40.     r=$?
  41.   elif test $silent -eq 1; then
  42.     unzip -p-L "$zipfile" "$i" | egrep $opt "$pat"
  43.     r=$?
  44.   else
  45.     unzip -p-L "$zipfile" "$i" | egrep $opt "$pat" | sed "s|^|${i}:|"
  46.     r=$?
  47.   fi
  48.   test "$r" -ne 0 && res="$r"
  49. done
  50. exit $res