[완료] 특정 문자열 삭제 명령어

maindb의 이미지

검색을 해봐도 vi 로 열었을때나
그 특정 문자열 이후의 모든 내용을 삭제 밖에 없네요.

하위 모든 디렉토리의 모든 파일에서 '<@%>' 란 문자열을 없애고 싶습니다.

알고 있는 지식과 검색 결과를 토대로 몇가지 응용을 해봤는데
잘 안되네요. 덕분에 모든 파일의 내용들 전부를 몇번 날려먹기만 하고...

명령어 조언 부탁 드립니다.

amorette의 이미지

아예 perl만 쓰면 속도는 빨라지겠지만,
간단히 명령어 쓰기에는 생각을 더 해야할 수도 있겠구요.

아니면,

find . -type f | xargs perl -pi -e 's/<@%>//g'

또는,
find -type f | xargs sed -i 's/<@%>//g'

이렇게 하면 되겠네요.
아니면,
find . -type f -exec sed -i 's/<@%>//g' '{}' \;

이렇게 해도 될 것 같구요.
find . -type f -exec perl -pi -e 's/<@%>//g' '{}' \;

또는 이렇게 해도 되구요.
maindb의 이미지

아.. 해봤는데 안되네요... 각 html 페이지 첫 부분에 <%@ Language=JavaScript %> 부분이 들어가서..
sql 인젝션 공격인것 같습니다. 그래서 우선 파일 내에 있는 위 문자열을 모두 없앨려고 하는데

위 명령어로 해보니까 안없어 지네요 ㅠ.ㅠ
(코드상에 나오는 첫줄, 마지막줄 php 관련문자열은 빼고..)

amorette의 이미지

php를 안써봐서 모르겠습니다.

파일에서 가장 먼저 발견되는
<?php,,,,?> 사이에 있는
@ Language=JavaScript
는 제거해야되는건가요?

maindb의 이미지

네! 그 문자열 입니다.
코드를 적으니
<?php
...
?>

여기 게시판에서 자동으로 들어가네요.

maindb의 이미지

오옷....

find . -type f -exec sed -i 's/=====//g' '{}' \;

요게 되는군요.. 감사합니다.

amorette의 이미지

처음 답변 쓸때 오류가 있어서,
곧장 코드들을 고쳤었습니다. 저는 4개 다 됩니다.