그래서 나는 디렉토리에 있는 문자열의 모든 인스턴스를 재귀적으로 바꾸려면(.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를 사용하는 것보다 약간 짧습니다.