Der schnellste Weg, um den Dateinamen unter Linux mit dem aktuellen Datum zu versehen

1200

Es gibt viele Vorkommen, bei denen ich eine Datei oder ein Verzeichnis mit dem aktuellen Datum benennen möchte. Meistens sind es temporäre Backups, die ich ab und zu mache, nur für den Fall, dass ich später etwas versaue.

Und da eine exportierte Datei, zum Beispiel eine Datenbank, immer denselben Namen haben wird, da ich keine ältere temporäre Sicherung überschreiben möchte, ist es die beste Lösung, ein Datum anzugeben. Ich bin sehr müde, das aktuelle Datum und die Unterstriche einzugeben, aber ich bin noch mehr müde, über meine Uhr zu schweben, um das Datum zu überprüfen.

Ich frage mich also, ob es eine Verknüpfung gibt, um das aktuelle Datum einzufügen. Wenn nicht, kann ich einen erstellen? Was ist der schnellste Weg, um die Benennung einer Datei / eines Ordners nach dem aktuellen Datum zu erleichtern?

3

3 Antworten auf die Frage

7
choroba

Verwenden Sie in einer Shell die Befehlsersetzung:

touch "$(date)" 

oder mit format

touch "$(date +%Y-%m-%d_%H.%M.%S)" 

Sie können den längeren Befehl in einem Alias ​​oder einer Funktion beibehalten

alias ts='date +%Y-%m-%d_%H.%M.%S' touch "$(ts)" 
3
SΛLVΘ

Nach dem Rat von Choroba können Sie eine benutzerdefinierte Aktion im Kontextmenü von Thunar definieren

1
BlueBerry - Vignesh4303

Es gab mehrere Möglichkeiten, die Datei anzufügen:

Vom Stackoverflow :

  1. Holen Sie sich das Datum als Zeichenfolge

Das ist ziemlich einfach. Verwenden Sie einfach den Datumsbefehl mit der Option +. Wir können Backticks verwenden, um den Wert in einer Variablen zu erfassen.

$ DATE=`date +%d-%m-%y` 

Sie können das Datumsformat ändern, indem Sie verschiedene% -Optionen verwenden, wie auf der Datumsmanpage beschrieben .

  1. Teilen Sie eine Datei in Namen und Erweiterung auf.

Das ist etwas kniffliger. Wenn wir glauben, dass es nur einen geben wird. Im Dateinamen können wir cut mit verwenden. als Trennzeichen.

$ NAME=`echo $FILE | cut -d. -f1 $ EXT=`echo $FILE | cut -d. -f2` 

Dies funktioniert jedoch nicht mit mehreren. im Dateinamen Wenn wir bash verwenden - was Sie wahrscheinlich sind - können wir einige Bash-Magie verwenden, die es uns ermöglicht, Muster zuzuordnen, wenn wir die variable Erweiterung ausführen:

$ NAME=$ $ EXT=$ 

Wenn wir sie zusammenstellen, bekommen wir:

$ FILE=somefile.txt  $ NAME=$ $ EXT=$  $ DATE=`date +%d-%m-%y`  $ NEWFILE=$_$.$ $ echo $NEWFILE  somefile_05-10-15.txt 

Und wenn wir uns weniger um die Lesbarkeit sorgen, erledigen wir die gesamte Arbeit in einer Zeile (mit einem anderen Datumsformat):

$ FILE=somefile.txt  $ FILE=$_`date +%d%b%y`.$ $ echo $FILE  somefile_05oct15.txt 

Andere Möglichkeiten wären:

$ date Mi 16.10 ab 19:20:51 Uhr EDT 2013

Wenn Sie wirklich solche Dateinamen wünschen, müssen Sie diese Zeichenfolge in Anführungszeichen setzen.

$ touch "foo.backup. $ (Datum)"

$ ll foo * -rw-rw-r-- 1 saml saml 0 Okt 16 19:22 foo.backup.Wed Okt 16 19:22:29 EDT 2013

Wahrscheinlich denken Sie an eine andere Zeichenkette, die angehängt werden sollte, wäre jedoch meine Vermutung. Ich verwende normalerweise so etwas:

$ touch "foo.backup.$(date +%F_%R)" $ ll foo* -rw-rw-r-- 1 saml saml 0 Oct 16 19:25 foo.backup.2013-10-16_19:25 

Weitere Informationen zum Formatieren der Ausgabe für Datum und Uhrzeit finden Sie in der Manpage. Zusätzliche Formate

Wenn Sie die vollständige Kontrolle übernehmen möchten, wenn Sie die Manpage aufrufen, können Sie Folgendes tun:

$ date +"%Y%m%d" 20131016  $ date +"%Y-%m-%d" 2013-10-16  $ date +"%Y%m%d_%H%M%S" 20131016_193655