전체 디렉토리에 대한 찾기 및 바꾸기 명령

전체 디렉토리에 대한 찾기 및 바꾸기 명령

Linux에는 특정 디렉터리와 아래 폴더의 모든 파일에서 특정 단어를 찾아 새 단어로 바꾸는 명령이 있습니까?

답변1

이는 모든 파일에서 대체됩니다. 특정 유형의 파일만 필요한 경우 더 구체적으로 만들 수 있습니다. 또한 .bak되돌려야 할 경우를 대비해 처리하는 모든 파일의 백업 파일을 생성합니다 . 백업 파일이 전혀 -i.bak필요 하지 않으면 -i.

find /path/to/directory -type f -exec sed -i.bak 's/oldword/newword/g' {} \;

더 이상 필요하지 않은 모든 백업 파일을 제거하려면:

find /path/to/directory -type f -name "*.bak" -exec rm -f {} \;

답변2

다음 명령을 사용할 수 있습니다.

grep -lR "foo" /path/to/dir | xargs sed -i 's/foo/bar/g'

grep문자열 "foo"가 포함된 파일을 찾은 다음 sed를 호출하여 "foo"를 "bar"로 바꿉니다 . 결과적으로 "foo"가 포함된 파일만 수정됩니다. 나머지 파일은 건드리지 않습니다.

답변3

단일 명령이 아니라 여러 명령의 조합:

find /home/bruno/old-friends -type f -exec sed -i 's/ugly/beautiful/g' {} ;

여기

답변4

더 많은 제어를 원할 경우 다음과 같은 Python 스크립트를 사용할 수 있습니다.

관련 정보