특정 이름의 폴더에 있는 특정 형식의 모든 파일 이름 바꾸기

특정 이름의 폴더에 있는 특정 형식의 모든 파일 이름 바꾸기

내 프로젝트에는 이라는 이름의 테스트 파일이 많이 있습니다 *.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"; done발견된 파일을 반복하여 ts삭제된 대상 으로 이름을 바꾸고 test.ts그 자리에 을 배치합니다.
  • in은 findsh {} +명령 (셸)에 파일을 제공하는 구문 findsh에 대한 자리 표시자일 뿐입니다 .{} +-exec

관련 정보