重命名具有特定名称的文件夹中具有特定格式的所有文件

重命名具有特定名称的文件夹中具有特定格式的所有文件

在我的项目中,我有很多测试文件,它们的名称为*.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调用 shell 来执行重命名的选项。

find . -type f -path '*__tests__*.ts' -exec sh -c '
  for f; do
    mv -- "$f" "${f%ts}test.ts"
  done
' findsh {} +
  • -exec sh -c调用 shell 并运行:
    • for f; do mv -- "$f" "${f%ts}test.ts"; done循环找到的文件,将它们重命名为ts已删除的目标,并test.ts在其位置上放置 a 。
  • 在 中findsh {} +findsh只是一个占位符,是将文件提供给命令(shell){} +的构造。-exec

相关内容