
私のプロジェクトには、 という名前のテスト ファイルが多数あります*.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
代わりに が配置されます。
- では
findsh {} +
、はfindsh
単なるプレースホルダーであり、はコマンド (シェル){} +
にファイルを渡す構成要素です。-exec