2009-12-07 4 views
1

내 운영 체제로 Ubuntu Karmic을 사용하고 있습니다. 필자는 자주 프로젝트 폴더 나 하위 폴더에있는 파일에 특정 문자열이 있는지 확인하기 위해 프로젝트 폴더를 검색해야합니다. 현재 find 명령을 사용하여 매개 변수로 찾으려는 문자열 im을 허용하는 스크립트를 작성했습니다.특정 문자열에 대한 코드 파일 검색

find . -exec grep -l $1 {} \; 

그러나이 문제는 공간이있는 문자열에는 작동하지 않는다는 점에서 문제가 있습니다. 그래서 공간 분리 문자열을 검색 할 방법이 있습니까? 아니면 작업을 수행 할 수있는 도구가 있습니까?

감사합니다.

+2

문자열을 큰 따옴표와 역 따옴표로 묶어야한다고 생각합니다. "\'some string \'" – Amarghosh

+0

어쩌면 당신은 ['ctags'] (http://en.wikipedia.org/wiki/Ctags) 그 외 여러분을 탐험해야 할 것 같은데요? – tripleee

답변

1

스크립트를 어떻게 호출합니까?

당신이 형태로
호출 할 필요가 공백으로 구분 문자열을 검색하려면

는 :

찾기 :

%./script_name.sh 'search string'

도에 찾기 호출을 변경합니다. -exec grep -l "$ 1"{} \;

+0

감사합니다 ... 나는 그 일을 생각 :) – johnswr

0

나는 당신이 단순히 당신이 필요로하는 것을 달성하기 위해 grep -lR ${1} .을 할지도 모른다라고 생각한다.

1

해당 명령의 더 나은 버전은 간단히 grep -rl "$1" .이거나 가능하면 grep -rl "$*" .입니다.

문자열에 정확한 공간이 포함되어 있고 쉘이 인수를 구문 분석하는 것만 큼 문제가있는 경우 "$*"을 사용하여 모든 arg를 참조 할 수 있으며 단어 경계에서 셸이 깨지는 것을 방지 할 수 있습니다 확장) 소프트 큰 따옴표를 사용하여.

0
grep -R "phrase with spaces" /folder/folder 
0
find/-type d -name "folder name" 2> /dev/null 
관련 문제