find 및 sed를 사용하여 {}가 포함된 줄을 파일에 재귀적으로 추가하세요.

find 및 sed를 사용하여 {}가 포함된 줄을 파일에 재귀적으로 추가하세요.

.ts다음 텍스트로 끝나는 모든 파일을 재귀적으로 추가하고 싶고 export {};최소한 폴더를 제외해야 합니다 node_modules.

나는 시도했다:

find . f ! -path '*/node_modules/*' -iname "*.ts" -exec sed -e '1 i\export {}' \;

결과: 각 파일에 대해 다음을 얻습니다.sed: 1: "1 i\export ./src/query/ ...": extra characters after \ at the end of i command

업데이트: gnu-sedmacOS에 설치하고 사용해 보았습니다 gsed. 하지만 작동하지 않는 것 같습니다. 무한히 실행되는 것 같습니다.

답변1

왜냐하면:

문자열은 '{}'다음으로 대체됩니다.현재 파일 이름 find의 일부 버전에서처럼 별도의 인수뿐만 아니라 명령 인수에 나타날 때마다 처리됩니다. \쉘 확장으로부터 보호하기 위해 두 구성 모두 이스케이프하거나 인용해야 할 수도 있습니다 .

다음 방법을 사용하십시오.

find . -type f ! -path '*/node_modules/*' -iname "*.ts" -exec sed -i '1 i\export\{\}' {} \;

-i, --in-place- sed파일을 제자리에서 편집하는 옵션

관련 정보