GREP를 사용하여 Find : Find에 무엇이 잘못되었는지. | Xargs Grep '…'?
문제
명령을 사용할 때 :
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
!