Bash

重命名具有特定名稱的文件夾中的所有具有特定格式的文件

  • August 14, 2020

在我的項目中,我有很多名為*.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'

但不知道如何重命名它們。

您需要-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已被刪除並將 atest.ts放在其位置。
  • In findsh {} +,findsh只是一個佔位符,並且{} +是將文件提供給-exec命令(shell)的結構。

引用自:https://unix.stackexchange.com/questions/604480