GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Hinzufügen eines Zeitstempels zu einem Dateinamen mit mv in BASH

Die wenigen Zeilen, die Sie aus Ihrem Skript gepostet haben, sehen für mich in Ordnung aus. Es ist wahrscheinlich etwas tieferliegendes.

Sie müssen herausfinden, welche Zeile Ihnen diesen Fehler gibt. Fügen Sie set -xv hinzu an den Anfang Ihres Skripts. Dies gibt die Zeilennummer und den Befehl aus, der in STDERR ausgeführt wird . Dies wird Ihnen dabei helfen, festzustellen, wo in Ihrem Skript dieser bestimmte Fehler auftritt.

Übrigens, hast du einen Shebang ganz oben in deinem Drehbuch? Wenn ich so etwas sehe, erwarte ich normalerweise, dass es ein Problem mit dem Shebang ist. Zum Beispiel, wenn Sie #! /bin/bash hatten oben, aber Ihr Bash-Interpreter befindet sich in /usr/bin/bash , wird dieser Fehler angezeigt.

BEARBEITEN

Neue Frage:Wie kann ich die Datei überhaupt korrekt speichern, um zu vermeiden, dass ich diese Korrektur jedes Mal durchführen muss, wenn ich die Datei erneut sende?

Zwei Möglichkeiten:

  1. Wählen Sie Bearbeiten->EOL-Konvertierung->Unix-Format Menüpunkt, wenn Sie eine Datei bearbeiten. Sobald es die richtigen Zeilenenden hat, behält Notepad++ sie bei.
  2. Um sicherzustellen, dass alle neuen Dateien die richtigen Zeilenenden haben, gehen Sie zu den Einstellungen->Einstellungen Menüelement und rufen Sie die Einstellungen auf Dialogbox. Wählen Sie Neues Dokument/Standardverzeichnis aus Tab. Unter Neues Dokument und Formatieren , wählen Sie Unix aus Radio knopf. Klicken Sie auf Schließen Schaltfläche.

Ich verwende diesen Befehl zum einfachen Drehen einer Datei:

mv output.log `date +%F`-output.log

Im lokalen Ordner habe ich 2019-09-25-output.log


mv server.log logs/$(date -d "today" +"%Y%m%d%H%M").log

Eine einzeilige Methode innerhalb von Bash funktioniert so.

[einige Ausgaben]>$(date "+%Y.%m.%d-%H.%M.%S").ver

erstellt eine Datei mit einem Zeitstempelnamen mit der Erweiterung ver

find . -type f -exec ls -la {} \; | cut -d ' ' -f 6- >$(date "+%Y.%m.%d-%H.%M.%S").ver

Natürlich

cat somefile.log > $(date "+%Y.%m.%d-%H.%M.%S").ver

oder noch einfacher

ls > $(date "+%Y.%m.%d-%H.%M.%S").ver


Linux
  1. Die Bash‘?

  2. Bash -c mit Positionsparametern?

  3. Bash-Datei Massenumbenennung mit Zähler?

  4. Warnung mit nftw

  5. Holen Sie sich den letzten Verzeichnisnamen/Dateinamen in einem Dateipfadargument in Bash

Bash:In Datei schreiben

Bash-Quellbefehl

Bash:An Datei anhängen

35 Bash-Skriptbeispiele

Bash-Umleitung mit Beispielen erklärt

Echotext mit neuer Zeile in Bash