grep은 여러 파일의 패턴을 검색하고 다른 파일로 출력합니다.

grep은 여러 파일의 패턴을 검색하고 다른 파일로 출력합니다.

a.file등 의 많은 파일을 포함하는 /foo/bar 디렉토리가 있습니다. 해당 디렉토리의 모든 파일에서 패턴을 검색하는 데 사용하고 있지만 라인이 에서 발견된 경우, 라인이 다음에서 발견된 경우와 같이 결과를 새 파일로 보내고 싶습니다.b.filec.filegrepxyza.new.filea.fileb.new.fileb.file

내 시도: grep -ri "xyz" /foo/bar/*화면에서는 잘 작동하고 결과의 모든 줄은 패턴이 포함된 파일의 경로로 시작됩니다. 새 파일을 만드는 데 사용할 수 있는 변수에 경로가 저장되어 있습니까?

편집하다:

내용은 다음과 일치하는 모든 줄 a.new.file이어야 합니다 .xyza.file

의 내용은 와 일치하는 모든 줄이어야 b.new.file합니다 .xyzb.file

답변1

for T in *.file
do
  grep -- xyz "$T" > "${T%.file}.new.file"
done

관련 정보