
В моем проекте есть много тестовых файлов, которые называются *.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
на его место помещается a.
- В
findsh {} +
,findsh
является просто заполнителем и{} +
представляет собой конструкцию, которая передает файлы команде-exec
(оболочке).