Bash-Skript Ich muss Dateien in Bash umbenennen, sodass der erste Teil des Dateinamens um den letzten Teil des Dateinamens verschoben wird

624
Chris C

Hier ist also einer der Dateinamen als Beispiel.

2017-11-09-23.00.19-CookingDoughnuts.txt

Umbenennen in

CookingDoughnuts-2017-11-09-23.00.19.txt

Ich muss dies in einer Menge von 1000s von Dateien tun, so dass es ein Skript ist. Der Teil des Skripts, mit dem ich festgefahren bin, ist das eigentliche Umbenennungsbit. Ein komplettes Skript kann jedoch bereitgestellt werden, wenn es einfacher ist, eine Lösung zu veröffentlichen.

Ich kann sagen, dass das datierte Format für jede Datei dasselbe ist. Das 4. Strich-Symbol ist immer der Teiler zwischen dem ersten und dem zweiten Teil des Dateinamens. Das tatsächliche Datum und die Uhrzeit variieren je nach Name und auch der Textteil des Dateinamens.

Es ist nicht erforderlich, dass das vollständige Datum und der vollständige Zeitstempel in den neuen Dateinamen geschrieben werden. In diesem Beispiel wäre das Folgende in Ordnung.

CookingDoughnuts-2017-11-09-00.00.00.txt

Stunden, Minuten und Sekunden können alle 00 sein, aber das Datum muss intakt sein.

0
Wenn Sie eine Massenumbenennung / -umstellung wie diese durchführen, sollten Sie unbedingt `mv -n` oder` mv -i` verwenden, um zu vermeiden, dass Dateien überschrieben werden, wenn ein Namenskonflikt, ein Namensfehler oder ... Gordon Davisson vor 5 Jahren 0

1 Antwort auf die Frage

1
Ignacio Vazquez-Abrams

Ersetzung von Parametern

fname="2017-11-09-23.00.19-CookingDoughnuts.txt" ext="$" name="$" pref="$" suff="$" newfname="$pref-$suff.$ext" echo "$newfname"