PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bash-Shell: Datei-Namen mit Datum aus Verzeichnis in Variable übernehmen



AndreasMeier
20-06-2007, 18:39
Hallo zusammen,

ich hab folgendes Problem:
Ich hab ein Verzeichnis, in dem jeden Tag eine neue Datei generiert wird (SQL-Backup).
Diese Datei hab ein Datum im Namen, z.B.


daten_2007_06_19_00_00.sql
daten_2007_06_20_00_00.sql
daten_2007_06_21_00_00.sql


Gibt es per Shell-Skript eine elegante Möglichkeit, dass immer nur die aktuellste Datei genommen wird ?
Ich möchte zwar nach Abarbeitung der Datei, diese gleich in ein Unterverzeichnis verschieben, brauche aber für einen Befehl den konkreten Dateinamen und kann nicht mit Wildcard arbeiten.

Das Datum im Namen muss nicht das aktuelle sein.
Es soll halt jeweils die jüngste Datei genommen werden.


Was ich auch noch fragen wollte:
Gibt es ein Shell-Kommando, mit dem ich prüfen kann, ob eine Datei überhaupt im Verzeichnis liegt ?


Herzlichen Dank im voraus,
Gruß
Andreas

peschmae
20-06-2007, 21:46
Da die Dateien so wie du das sagst praktisch nur alphabetisch sortiert werden müssen und du dann die letzte nimmst sollte es ein:


ls | tail -1


tun. Alternativ kannst du die Dateien eventuell auch nach Änderungsdatum oder so sortieren lassen (ls -t).

Prüfen ob eine Datei überhaupt existiert kannst du mit dem Programm "test" oder seinem alias "[":


if [ -e test.txt ]; then
echo existiert
else
echo existiert nicht
fi


MfG Peschmä

AndreasMeier
20-06-2007, 22:04
Ja, super.
Das mit dem ls | tail -1 klappt schonmal.
Bau ich morgen mal in mein Skript ein und versuch das ganze in eine Variable zu bekommen, mit der ich dann weiterarbeiten kann.

Herzlichen Dank !!
Gruß
Andreas

fs111
27-06-2007, 22:53
Falls Du nicht die Datei mit dem neuesten Namen, sondern die, die als letztes geändert wurde willst, nimm einfach



NEWEST_FILE=$(ls -tr | tail -1)
echo $NEWEST_FILE


HTH

fs111