>> Delete No. 889 article
No. xgrep - 가난하고 게으른 사람들을 위해서..

등록 2000-12-21 02:00:00     조회 4
이름 awknn    

		소스코드 디렉토리에서 뭔가 찾을때 ctags 를 쓰는데
원하는게 나오지 않을 때가 많습니다. 그래서 결국
grep -r 을 쓰게 되는데, 이건 쉽게 쓰면 바이너리까지
다 검사해 버리죠. 그래서 머리 굴려서 간단한 스크립트를
만들었습니다. 이걸 돌리기 위해서는
grep, tee, less, wc, vim, cut, find, xargs 등이
설치되어 있어야 합니다.
 사용법은 다음과 같습니다:
  xgrep SetClockFrequency
   현재 디렉토리와 서브 디렉토리에서 소스코드일 것 같은
  파일들을 뒤져서 SetClockFrequency 라는 문자열을
  찾습니다.
   찾은 다음에는 이것을 less로 보여주고,
  less를 빠져 나가면 다시 vim -q 명령으로
  하나씩 열어서 보여 줍니다.
  vim 안에서 다음에 나온 SetClockFrequency를
  찾는 명령은 :cn 이라는 것은 기억 하시는지?
 xgrep +*.h SetClockFrequency
   현재/서브 디렉토리에서 *.h 파일들만을 골라서 이들 중
  SetClockFrequency 가 들어 있는 파일을 찾습니다.
  그 이후는 위와 같습니다.
 xgrep +*.h +*.c SetClockFrequency
   현재/서브 디렉토리에서 *.h 와 *.c 파일들만을 골라서
  SetClockFrequency 들어 있는 줄을 찾습니다.
  그 이후는 위와 같습니다.
  만약! emacs를 쓰시는 분이라면, 아래 스크립트에서
   browse=어쩌구저쩌구
 라고 되어 있는 줄을 지우시면 emacs 의 grep 모드용
명령으로 사용하실 수 있습니다.
 음 별거 아닌 줄은 저도 알지만, 갑자기 누군가 이런게
필요할 것 같은 예감이 갑자기 스쳐서 적어 봤습니다.
 ---------------- xgrep.sh ------------------
#!/bin/sh
 browse="|tee xgrep.out |less -eR; (wc xgrep.out && vim -q xgrep.out)"
 opts=
pats=
root=.
query=
 while [ ! -z "$1" ]; do
    case $1 in
        +*)  newpat=`echo $1 |cut -c2-`; if [ -z "$pats" ]; then pats="-iname $n
ewpat"; else pats="-o -iname $newpat"; fi; ;;
        *)   query=$1; shift; break; ;;
    esac
    shift
done
rest=$*
 if [ -z "$pats" ]; then
  pats="-iname *.h -o -iname *.hpp -o -iname *.inc -o -iname *.c -o -iname
*.cpp -o -iname *.s -o -iname *.asm -o -iname *.java"
fi
 cmd="find ${root} ${pats} |xargs grep -n ${opts} '${query}' ${rest} ${browse}";
 #echo "Running:$cmd"
eval $cmd
 ----------------------------------------------
The Awakening
[관리자] 패스워드를 입력 하십시오. 답장이 존재하면 함께 삭제됩니다.[ 목록 | 이전 ]
패스워드:    

Copyleft 1999-2026 by JSBoard Open Project
Theme Designed by IDOO All right reserved