![특정 이름의 폴더에 있는 특정 형식의 모든 파일 이름 바꾸기](https://linux55.com/image/178533/%ED%8A%B9%EC%A0%95%20%EC%9D%B4%EB%A6%84%EC%9D%98%20%ED%8F%B4%EB%8D%94%EC%97%90%20%EC%9E%88%EB%8A%94%20%ED%8A%B9%EC%A0%95%20%ED%98%95%EC%8B%9D%EC%9D%98%20%EB%AA%A8%EB%93%A0%20%ED%8C%8C%EC%9D%BC%20%EC%9D%B4%EB%A6%84%20%EB%B0%94%EA%BE%B8%EA%B8%B0.png)
내 프로젝트에는 이라는 이름의 테스트 파일이 많이 있습니다 *.ts
.
모두 __tests__
폴더 에 있지만 __tests__/test1.ts
.__tests__/dir2/test2.ts
이 파일의 이름을 *.test.ts
.
어떻게 해야 하나요?
예:
project/src/__tests__/app.ts
->project/src/__tests__/app.test.ts
project/src/dashboard/__test__/start/login.ts
->project/src/dashboard/__test__/start/login.test.ts
다음 파일을 성공적으로 찾았습니다.
find . -type f -path '*__tests__*.ts'
하지만 이름을 바꾸는 방법을 모르겠습니다.
답변1
-exec
이름이 바뀐 옵션을 실행하려면 셸을 호출 해야 합니다 .
find . -type f -path '*__tests__*.ts' -exec sh -c '
for f; do
mv -- "$f" "${f%ts}test.ts"
done
' findsh {} +
-exec sh -c
셸을 호출하고 다음을 실행합니다.for f; do mv -- "$f" "${f%ts}test.ts"; done
발견된 파일을 반복하여ts
삭제된 대상 으로 이름을 바꾸고test.ts
그 자리에 을 배치합니다.
- in은
findsh {} +
명령 (셸)에 파일을 제공하는 구문findsh
에 대한 자리 표시자일 뿐입니다 .{} +
-exec