findfile

#!/bin/bash

###########################################################
# file name: findline                                     #
# find files with key text, recursively in current folder #
###########################################################

ME=`basename $0`

showHelp()
{
  echo "usage $ME -h"
  echo "usage $ME [-i] [-s] name_pattern [file_suffix1] [file_suffix2] [...]"
  echo "-h: show help"
  echo "-i: ignore case"
  echo "-s: silence command, not display command"
  echo "The file suffix is case insensitive"
}

INVALID=1
IGNORE_CASE=1
SILIENCE=1
NUMBER=1

# check arguments
while getopts :ihsn OPTION
do
  case $OPTION in
    i) IGNORE_CASE=0
       ;;
    s) SILIENCE=0
       ;;
    h) showHelp
       exit 0
       ;;  
    *) INVALID=0
       ;;
  esac
done

# user input invalid arguments
[ $INVALID -eq 0 -o $# -eq 0 ] && showHelp && exit 1

#echo $OPTIND

# shift to pattern arg position
shift `expr $OPTIND - 1`
PATTERN=$1
[ $# -gt 1 ] && shift && SUFFIX=$*

# set exec args for options
[ $IGNORE_CASE -eq 0 ] && IGNORE_CASE_ARG="-iname" || IGNORE_CASE_ARG="-name"

if [ -n "$SUFFIX" ]
then
  for VAR in $SUFFIX
  do
    S=$S"|"$VAR
  done
 
  SUFFIX_PATTERN=`echo $S | sed 's/|//'`
  SUFFIX_ARG=" | grep -i -E \"\.($SUFFIX_PATTERN)\$\""
fi

RET=0

# find command
CMD="find . -type f -follow $IGNORE_CASE_ARG \"*$PATTERN*\" 2>/dev/null $SUFFIX_ARG"

# display find command
[ $SILIENCE -eq 0 ] || echo $CMD

FILES=(`eval $CMD`)

INDEX=0
while [ $INDEX -lt ${#FILES[*]} ]
do
  NO=`expr $INDEX + 1`
  echo "$NO.   ${FILES[$INDEX]}"
  eval "_$NO=${FILES[$INDEX]}"
  INDEX=$NO
done

if [ ${#FILES[*]} -gt 0 ]
then
  # execute command
  echo -e "Input command('\$_n' as file name):\c"
  read TMP
    
  if [ -n "$TMP" ]
  then
    COMMAND="$TMP 2>/dev/null"
    eval $COMMAND
  fi
fi
 
RET=$?

exit $RET


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值