Eine Datei umbenennen und dabei das Datum anfügen

Des öfteren kommt man die die Verlegenheit, dass man eine Datei so umbenennen möchte, dass das Modifikationsdatum der Datei an den Namen angehängt wird. Zum Beispiel soll aus „foo.bar“ die Datei „foo.bar_2013-02-12“ werden.

Jetzt kann man das natürlich so von Hand tippen, nach dem man sich mit ls -l über das entsprechende Datum informiert hat. Man kann das aber auch die Shell machen lassen:

mv foo.bar foo.bar_`stat -c '%y' foo.bar | cut -f 1 -d " "`

Dabei muss man aber viel tippen und vor allem den Dateinamen gleich drei mal. Das geht auch anders:

THEFILE=foo.bar && mv $THEFILE ${THEFILE}_`stat -c '%y' $THEFILE | cut -f 1 -d " "`

Weiterhin viel Tipparbeit, daher bauen wir daraus am besten einen Alias. Allerdings kann man einem Alias keine Parameter übergeben, daher machen wir eine Funktion daraus und tragen das folgende in unsere bash.rc ein:

mvdate(){ mv $1 ${1}_`stat -c '%y' $1 | cut -f 1 -d " "`; }

Nun macht mvdate foo.bar aus der Datei „foo.bar“ die „foo.bar_2013-02-12“.

 

Ein Gedanke zu „Eine Datei umbenennen und dabei das Datum anfügen

  1. romeofox Beitragsautor

    Manchmal habe ich auch das Bedürfnis, die Namen von Bild-Dateien von der einen Kamera in das Format einer anderen Kamera zu ändern, so dass alle Bilder chronologisch sortiert werden. D.h., ich möchte von IMG_1653.JPG nach IMG_20171103_093043000_1653.JPG umbenennen. Das ist etwas komplexer und geht dann so:

    mvimg(){ mv $1 "IMG_`stat -c '%y' $1 | tr -d '\-:' | tr ' ' '_' | cut -f 1 -d "."`000"${1#IMG}; }

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.