Benennen Sie alle Dateien mit einem bestimmten Format um, die sich in einem Ordner mit einem bestimmten Namen befinden

Benennen Sie alle Dateien mit einem bestimmten Format um, die sich in einem Ordner mit einem bestimmten Namen befinden

In meinem Projekt habe ich viele Testdateien mit dem Namen *.ts.
Sie befinden sich alle in __tests__Ordnern, können aber auch __tests__/test1.ts, __tests__/dir2/test2.tsusw. heißen.

Ich möchte diese Dateien umbenennen in *.test.ts.

Wie könnte ich das machen?

Beispiele:

  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

Ich konnte diese Dateien wie folgt finden:

find . -type f -path '*__tests__*.ts'

aber keine Ahnung, wie ich sie umbenennen kann.

Antwort1

Sie benötigen die -execMöglichkeit, zum Durchführen der Umbenennung eine Shell aufzurufen.

find . -type f -path '*__tests__*.ts' -exec sh -c '
  for f; do
    mv -- "$f" "${f%ts}test.ts"
  done
' findsh {} +
  • -exec sh -cRuft eine Shell auf und führt aus:
    • for f; do mv -- "$f" "${f%ts}test.ts"; doneFührt eine Schleife über die gefundenen Dateien aus, benennt sie in ein Ziel um, dessen Ziel tsentfernt und test.tsan dessen Stelle ein gesetzt wird.
  • In ist es nur ein Platzhalter und die Konstruktion findsh {} +, die dem Kommando (der Shell) die Dateien übergibt.findsh{} +-exec

verwandte Informationen