Frage Kopieren Sie mehrere Dateien mit derselben Erweiterung, aber fügen Sie ein Datum hinzu


Ich möchte einen einzigen Befehl erstellen, der alle meine sichert *.db Dateien in einem Verzeichnis, aber ich möchte das aktuelle Datum anhängen.

a.db -> a_2016-04-21.db

b.db -> b_2016-04-21.db

c.db -> c_2016-04-21.db

Ich weiß, da ist das:

cp a{.db,_`date +%F`.db}

Befehl, aber ich bin unsicher, wie man einen einzelnen Befehl erstellt, der alle meine kopieren kann *.db Dateien


0
2018-04-21 19:37


Ursprung




Antworten:


Erstellen Sie eine Funktion mit einer Schleife in Ihrer ~ / .bashrc-Datei:

mybackup() {
  dir="/path/to/dir/with/db/files"

  d="$(date +%F)"
  cd "$dir" && for i in *.db; do 
    echo cp "$i" "${i}${d}.db"
  done && cd -
}

Wenn alles gut aussieht, entferne es echo.

Syntax: mybackup


1
2018-04-21 20:55



Schön. Ich fügte schließlich hinzu f="${i%.*}" und dann ersetzt i mit f weil ich nur den Dateinamen, nicht die Erweiterung wollte. Auf diese Weise wird die resultierende Datei sein a_2016-04-21.db Anstatt von a.db_2016-04-21.db - Bijan
Ja, das ist ein Fehler. Guter Fang! - Cyrus