이름에 특정 문자열이 포함된 폴더 아래의 파일에서 특정 문자열만 바꾸는 방법

이름에 특정 문자열이 포함된 폴더 아래의 파일에서 특정 문자열만 바꾸는 방법

다음과 같은 디렉토리 구조가 있습니다.

resources/config/config_12_33/en/config1.txt

resources/config/config_12_33/fr/config1.txt

resources/config/config_12_34/en/config1.txt

resources/config/config_12_34/fr/config1.txt

resources/config/config_15_33/en/config1.txt

resources/config/config_15_33/fr/config1.txt

resources/config/config_15_34/en/config1.txt

resources/config/config_15_34/fr/config1.txt

resources/config/config_18_33/en/config1.txt

resources/config/config_18_33/fr/config1.txt

resources/config/config_18_34/en/config1.txt

resources/config/config_18_34/fr/config1.txt

총 "OldString"이 있다고 가정합니다.구성1.txtconfig_15_*파일에서 config1.txt 파일이 폴더 아래에 있으면 "OldString"을 "NewString"으로 바꾸려고 합니다.

findconfig1.txt의 모든 문자열을 및 로 바꾸는 방법을 알고 있지만 sed특정 폴더 아래에 있는 파일의 문자열을 바꾸고 다른 폴더는 변경하지 않고 그대로 두는 방법을 모르겠습니다.

답변1

find다음과 같이 입력 할 수 있습니다 .find

find . -name "config_15*" -type d -print0 | xargs  -0 -I'()' find '()' -type f -exec sed -i 's,OldString,NewString,' "{}" \;

관련 정보