사용 sed으로 find대신grep
우선, 나는, find대신에 고용 grep하고 세 가지 이유가 있습니다.
find보다 정확한 파일 선택이 가능합니다. 예를 들어, grep -r string *.txt현재 디렉토리에서만 파일을 생성합니다. 하위 디렉토리에있는 것은 아닙니다.
find-exec전체 --null … |xargs 0구성에 대한 필요성을 제거 하는 강력한 옵션이 제공됩니다 .
-readable와 -writable의 옵션 find에 액세스 할 수 없습니다 파일에 시간을 낭비하는 것을 방지 할 수 있습니다.
캡처 테스트
즉, grep무엇이 포착 될지보기 위해 첫 번째 테스트에 적합합니다.
$ find . -exec grep term1 {} \;
또는 더 구체적으로 :
$ find . -type f -name '*.txt' -readable -writable -exec grep term1 {} \;
드라 이런
이제 드라 이런을 진행하십시오 sed. sed옵션은 -n동의어입니다 --quiet과 p의 맨 끝에서 sed표현은 현재의 패턴 공간을 인쇄합니다.
$ find . -exec sed -n 's/term1/term2/gp' {} \;
또는 더 구체적으로 :
$ find . -type f -name '*.txt' -readable -writable -exec sed -n 's/term1/term2/gp' {} \;
실행
모든 것이 잘 보이는 경우, 대체하여 최종 명령을 실행 sed옵션 -n에 의해 -i"장소"에 대한과를 제거하여 p말.
$ find . -exec sed -i 's/term1/term2/g' {} \;
또는 더 구체적으로 :
$ find . -type f -name '*.txt' -readable -writable -exec sed -i 's/term1/term2/g' {} \;
더 많은 find예
더 많은 find예제는 여기 에서 찾을 수 있습니다 .