bash를 사용하여 다음 결과를 얻으려고 합니다.
grep
특정 하위 문자열에 대한 파일입니다.- 이러한 파일의 파일 이름(공백 포함 가능)을 가져와서 인쇄하세요.
- 각 파일 이름을 인쇄한 후 다시 grep하고 싶지만 이번에는 해당 파일 내에서만 가능합니다.
결과는 다음과 같습니다.
/tmp/file1.txt
it works!
/tmp/file2.txt
/tmp/file3.txt
it works!
다음과 같은 명령을 작성하려고 합니다.
grep -irl "something" . | xargs -I % sh -c 'echo "%"; cat "%" | grep -i "another thing" "%"'
설명: grep -l
파일 이름을 반환합니다. 그런 다음 이 파일 이름을 인쇄 echo "%"
한 다음 파일 내에서 grep을 수행하려고 합니다.
하지만 행운은 없습니다. 여기서 교훈은 무엇입니까?
명확히 하자면, 내 실제 문제/목표는 문자열 A를 포함하지만 문자열 B를 포함하지 않는 모든 파일을 찾는 것입니다.
추가 설명: 비슷한 것을 원하지만 grep A | grep -v B
일치하는 모든 파일 목록도 원합니다.A
답변1
여기서 교훈은 무엇입니까?
아마도푸딩에 계란을 너무 많이 넣지 마세요.
%( > grep -l -r -- "$patternA" . | > 티/개발/fd/7 | > xargs grep -L --"$patternB" >) 7>&1