.php
디렉터리의 모든 파일을 반복적으로 반복하고 특정 텍스트 패턴을 검색하고 바꾸는 쉘 스크립트를 찾고 있습니다 .
검색 패턴은 꽤 길기 때문에(5000자 이상) 편의를 위해 다른 텍스트 파일에 저장할 수 있습니다. 또한 슬래시 문자도 포함되어 있습니다.
편집: 첫 번째 부분을 이해한 것 같습니다.
find . -name "*.php"
그렇다면 이 파일 내에서 어떻게 검색하고 바꾸나요?
답변1
이는 sed와 xargs를 잘 조합하면 쉽게 수행할 수 있습니다.
find . -name "*.php" | xargs -n 1 echo
xargs의 힘을 보여줄 것입니다.
그런 다음 샘플 파일에서 내부 변경(-i) 또는 백업 변경(-i.bak)을 사용하여 정규식을 테스트할 수 있습니다. 패턴/교체에 이미 문자가 있는 경우 "/"를 다른 문자로 바꿀 수도 있습니다.
결국 다음과 같아야 합니다.
pattern=`cat /path/to/pattern`; replacement=`cat /path/to/replacement`
find . -name "*.php" | xargs -n 1 sed -i -e "s|$pattern|$replacement|g"
답변2
노력하다:
find . -name "*.php" -exec sed -i "s/$(cat /path/to/pattern.txt)/$(cat /path/to/replacement.txt)/g" {} \;
는 pattern
검색할 패턴 replacement
이고 는 이를 대체할 텍스트입니다.
파일을 "제자리에서" 편집 하는 옵션 -i
. sed
편집하기 전에 파일의 백업을 생성하려면 를 사용하십시오 -i'.bak'
.
답변3
perl -p -i -e 's/originalString/targetString/g' `find . -name '*' -type f`