이 문자열이 포함된 모든 파일에서 이 문자열을 제거하세요.

이 문자열이 포함된 모든 파일에서 이 문자열을 제거하세요.

문자열 = "이 문장 삭제"가 있다고 가정해 보겠습니다.

현재 디렉터리의 모든 파일과 현재 디렉터리의 하위 디렉터리에 있는 모든 파일에서 이 문자열을 제거하고 싶습니다.

달성하는 방법?

나는 이것을 시도했습니다 :

sudo grep -rl stringtoreplace ./ | xargs sed -i 'stringtoreplace//g'

sudo를 사용해도 여전히 권한 오류가 발생합니다!

교체할 문자열은 다음과 같습니다.

,"\x3E\x74\x70\x69\x72

답변1

for file in $(find . -mindepth 1 -type f); do sed -i 's/remove\ this\ sentence/stringtoreplace/g' $file; done

그것을 분석해 봅시다.

$(find.-minlength1-typef)

그러면 작업 디렉터리에서 시작하는 모든 파일을 찾아 전체 경로로 반환합니다. 재귀는 검색하는 최소 깊이가 하나(동일한 디렉터리) 또는 여러 하위 디렉터리 깊이임을 의미합니다.

sed -i 's/remove\ this\ 문장/stringtoreplace/g'

-i modify file in-place
/g all occurrences of "remove this sentence" in lines as they're read.

그런 다음 파일을 반복하는 "for" 루프가 있습니다.

더 쉬울 수도

또 다른 방법은 다음과 같습니다.

find . -mindepth 1 -type f -exec sed -i 's/remove\ this\ sentence/stringtoreplace/g' {} \;

...그건 같은거야. 여기서는 find를 사용하여 파일을 찾고 발견된 각 파일에 대해 sed 내부 바꾸기 명령을 실행합니다.

관련 정보