Linux에서 백업 파일을 재귀적으로 검색하고 바꾸는 방법은 무엇입니까?

Linux에서 백업 파일을 재귀적으로 검색하고 바꾸는 방법은 무엇입니까?

폴더의 모든 파일에서 문자열을 재귀적으로 검색하고 싶습니다.

문자열이 발견되면 파일을 동일한 위치( 에 복사 <filename>-orig)에 백업하고 발견된 문자열을 다른 문자열로 바꿉니다.

어떻게 하나요?

명령어 하나로 할 수 있나요? 감사해요.

답변1

두 가지 -exec작업을 결합할 수 있습니다 find. 먼저 일치하는 문자열이 포함된 모든 파일을 찾고 두 번째로 문자열을 교체 키워드로 바꿉니다(원본 파일의 백업 유지).

find . -type f -exec grep -il "searchstring" {} \; -exec sed -i.bak \
's/searchstring/replacestring/' {} \;

설명하다:

  • -exec grep -il "searchstring":"searchsring"을 검색하세요
  • -exec sed -i.bak 's/searchstring/replacestring/': 문자열이 포함된 파일이 발견되면 해당 파일의 백업을 유지하고 "replacestring"으로 바꿉니다.

이 경우 두 번째 명령은 첫 번째 명령이 성공적으로 반환된 경우에만 실행됩니다.

관련 정보