특정 이름의 폴더에 있는 특정 형식의 모든 파일 이름을 바꿉니다.

특정 이름의 폴더에 있는 특정 형식의 모든 파일 이름을 바꿉니다.

내 프로젝트에는 *.ts.
모두 폴더에 있지만 폴더 등이 __tests__될 수도 있습니다 __tests__/test1.ts.__tests__/dir2/test2.ts

해당 파일의 이름을 *.test.ts.

어떻게 할 수 있나요?

예:

  1. project/src/__tests__/app.ts->project/src/__tests__/app.test.ts
  2. 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"; donets발견된 파일을 반복하여 제거되고 test.ts해당 위치에 a가 배치되는 대상으로 이름을 바꿉니다 .
  • 에서 는 findsh {} +자리 findsh표시자일 뿐이며 명령(셸) {} +에 파일을 제공하는 구성입니다 .-exec

관련 정보