
No meu projeto, tenho muitos arquivos de teste, chamados *.ts
.
Eles estão todos em __tests__
pastas, mas podem ser arquivos __tests__/test1.ts
, __tests__/dir2/test2.ts
e assim por diante.
Eu gostaria de renomear esses arquivos para *.test.ts
.
Como eu poderia fazer isso?
Exemplos:
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
Consegui encontrar esses arquivos com:
find . -type f -path '*__tests__*.ts'
mas não tenho ideia de como renomeá-los.
Responder1
Você precisa da -exec
opção de invocar um shell para realizar a renomeação.
find . -type f -path '*__tests__*.ts' -exec sh -c '
for f; do
mv -- "$f" "${f%ts}test.ts"
done
' findsh {} +
-exec sh -c
Invoca um shell e executa:for f; do mv -- "$f" "${f%ts}test.ts"; done
Faz um loop nos arquivos encontrados, renomeando-os para um destino cujots
é removido e atest.ts
é colocado em seu lugar.
- Em
findsh {} +
,findsh
é apenas um espaço reservado e{} +
é a construção que fornece os arquivos ao-exec
comando (o shell).