2015-01-26 6 views
1

특정 폴더의 모든 파일을 찾으려고하고 "TO_BE_REPLACED"라는 텍스트가 있고이 문자열을 Impl. 자없이 파일 이름으로 대체하려고합니다. 내 말은, 텍스트가 "TO_BE_REPLACED"인 MyServiceImpl이라는 파일을 가지고 텍스트 "MyService"로 바꾸고 싶습니다. 어떻게 할 수 있습니까?Bash 스크립트가 패턴을 찾고 파일 이름으로 바꿉니다.

find src/main/java/com/shn/*/server/service/impl/ -type f -print0 | xargs -0 sed -i "" "s/TO_BE_REPLACED/<filename>/g" 

답변

0

당신은 이런 식으로 작업을 수행 할 수 있습니다 : 나는 결과없이이 방법을 시도

find . -type f | parallel -q sed -i "" -e 's/TO_BE_REPLACED/{=s:.*/::;s/Impl$//=}/g' {} 
여기에 트릭이

사용 :

while read -r filename 
do 
    sed -i "s/TO_BE_REPLACED/MyService/g" $filename 
done < <(find "src/main/java/com/shn/*/server/service/impl/" -type f) 
0

당신은 GNU 병렬> = 20140822가있는 경우 perl 표현식은 .../MyServiceImpl에서 MyService으로 이동하여 sed에서 사용합니다.