find 및 sed를 사용하여 여러 파일의 문자열 바꾸기

find 및 sed를 사용하여 여러 파일의 문자열 바꾸기

그래서 나는 디렉토리에 있는 문자열의 모든 인스턴스를 재귀적으로 바꾸려면(.java 확장 파일에만 해당) 다음을 사용해야 한다는 결론에 도달했습니다.

find . -type f -name "*.java" -exec sed -i 's/original/result/g' {} +

그런데 바꾸려는 문자열에 가 포함되어 있으면 어떻게 해야 합니까 /?

/*Comment*/예를 들어, 문자열을 몇 가지 일반적인 단어로 바꾸고 싶은 경우 sed가 제대로 작동하려면 어떤 구분 기호를 사용해야 합니까?

답변1

@vesa-karjalainen이 제안한 것뿐만 아니라 sed모든 구분 기호를 사용할 수도 있습니다 .perl

find . -type f -name "*.java" -exec sed -i 's:original:result:g' {} +

답변2

슬래시를 이스케이프하려면 \/ 다음과 같이 작성하십시오. 다음과 같이 할 수도 있습니다.

perl -pi -e 's!original!result!g' *java

!대신 구분 기호로 사용하십시오 /. 이는 find & sed를 사용하는 것보다 약간 짧습니다.

관련 정보