문제

명령을 사용할 때 :

find . | xargs grep '...'

나는 잘못된 경기를한다. 나는 문자열을 검색하려고합니다 ... 현재 폴더의 모든 파일에서

도움이 되었습니까?

해결책

Andy White가 말했듯이, 당신은 사용해야합니다 fgrep 평원과 일치시키기 위해 ., 또는 점을 피하십시오.

그래서 당신은 글을 써야합니다 (-type f 파일 만있는 것입니다. 분명히 디렉토리를 원하지 않습니다.) : :) : :

find . -type f | xargs fgrep '...'

또는 여전히 grep을 사용하려는 경우 :

find . -type f | xargs grep '\.\.\.'

그리고 당신이 원한다면 현재의 서브 디렉토리가 아닌 디렉토리 :

find . -maxdepth 1 -type f | xargs fgrep '...'

다른 팁

'.' 모든 캐릭터와 일치하므로 3 개 이상의 문자가 포함 된 모든 라인을 찾을 수 있습니다.

다음과 같이 점을 피할 수 있습니다.

find . | xargs grep '\.\.\.'

또는 REGEX 매치 대신 문자 그대로 일치하는 FGREP를 사용할 수 있습니다.

find . | xargs fgrep '...'

(일부 버전의 GREP는 또한 -f 플래그를 수용하여 fgrep처럼 행동합니다.)

@op, 당신이 포함 된 파일을 찾고 있다면 ...

grep -R "\.\.\." *

말 그대로 입력하는 경우 grep '...' 당신은 거의 모든 문자열과 일치합니다. 나는 당신이 실제로 입력하는 것을 의심합니다 '...' 당신의 grep 명령을 위해서는 ... 세 문자와 일치합니다.

검색하는 내용에 대한 자세한 정보를 게시하면 누군가가 더 도움이 될 수 있습니다.

당신이 찾고 있다면 파일 이름 일치하고 시도해보십시오 :

find . -name "filename pattern" 

또는

find . | grep "filename pattern"

당신이 찾고 있다면 파일 그 일치 (예 : Grep String이 포함되어 있음)

find . | xargs grep "string pattern"

잘 작동합니다. 또는 간단히 :

grep "string pattern" -R *

Jeremy의 답변을 완료하려면 시도하고 싶을 수도 있습니다.

find . -type f | xargs grep 'your_pattern'

또는

find . -type f -exec grep 'your_pattern' {} +

Xargs와 유사합니다

추가 할 수 있습니다 : RTFM! 또는 더 예의 바른 방식으로 : 사용 및 남용

man command

!

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top