punds36 So sieht der Befehl aus. Dieser steht in einem Skript
Das von Mo - Fr mit cron startet.
Das heißt, in diesem Skript kann auch die Logik für die Seriennummer erfolgen.
a) Die Idee von Pierre
Ist bestechend einfach und ließe sich mit einem Offset auch an deine Anforderung (Nummerierung von 1..n) anpassen, z.B.
#!/bin/bash
#
offset=251
ts_name=$(($(date '+%j') - $offset)).ts
echo "Date: $(date '+%j')"
echo "Name: $ts_name"
Ergebniss (für heute):
Date: 252
Name: 1.ts
Nachteile dieses Verfahrens:
- erzeugt bei einem Jahreswechsel Kuddelmuddel in der Reihenfolge
- für die Auslassungstage Sa+So entstehen Lücken in der Seriennummerierung
Der "bessere" Ansatz müßte also darauf beruhen: die letzte Seriennummer zu ermitteln um daraus eine neue zu generieren.
Zwei Möglichkeiten:
a) über den letzten Dateinamen
b) aus einer extra Datei heraus
a) über Dateinamen
#!/bin/bash
#
touch {1..10}.ts
last_file=$(dir -1 -v *.ts | tail -n1)
last_nr=$(basename -s .ts $last_file)
new_file=$(($last_nr + 1)).ts
echo "Last file:" $last_file
echo "Last nr :" $last_nr
echo "New file :" $new_file
Ergebniss:
Last file: 10.ts
Last nr : 10
New file : 11.ts
Nachteil dieser Methode (bzw. Mehraufwand): Du speicherst deine Aufnahmen in separate Verzeichnisse mit $datum. Um also an den .ts-Namen mit der wirklich höchsten/letzten Nummer zu kommen müßtest du für den Teil, der last_file ermittelt:
a) im Prinzip ein last_dir in ./Aufnahmen/ ermittteln
b) Dann daraus die Nummer der darin enthaltenen *.ts Datei
Tip: bei $datum nimm die US-Schreibweise, also YYYY-MM-DD, also date '+%F'. Das ist viel einfacher zu sortieren.
//Edit: Cr hat dafür einen besseren Ansatz.
Oder du speicherst alle Aufnahmen in einem Verzeichnis, daß Datum ergibt sich ja aus der Erstellungzeit der Datei. Dann kannst du wie im Beispiel verfahren.
b) Wert aus einer externen Datei (hier: akt_nr)
#!/bin/bash
#
# Wenn Datei akt_nr vorhanden ist
if [[ -a akt_nr ]]; then
# ziehe die Nr. daraus
last_serial_nr=$(<akt_nr)
else
# ansonsten: Nr ist 0 (also Serienstart, es gibt noch keine *.ts Datei)
last_serial_nr=0
fi
# Erhöhe die letzte Nr. um 1
new_serial_nr=$(($last_serial_nr + 1))
new_file=$new_serial_nr.ts
# Aktualisiere die Nr in akt_nr
echo $new_serial_nr > akt_nr
echo "Last serial nr:" $last_serial_nr
echo "New serial nr :" $new_serial_nr
echo "New file :" $new_file
Ergebniss nach zwei Durchgängen:
Last serial nr: 0
New serial nr : 1
New file : 1.ts
(ab hier existiert akt_nr)
Last serial nr: 1
New serial nr : 2
New file : 2.ts
Diese Möglichkeit halte ich für die beste. Die Datei akt_nr kannst du z.B. in ./Aufnahmen/ plazieren, dann kannst du die *.ts Dateien abspeichern wo und wie du willst.
//Edit: Und du kannst die Seriennummer flexibel anpassen, z.B. wenn du einmal gezwungen wärest, die nächste Folge anders zu nummerieren, weil irgendetwas nicht mehr paßt, dann reicht eine Anpassung des Datei mit der letzten Nummer.
So könntest du deine Nummerierung der *.ts Dateien machen, du mußt natürlich deine Pfade entsprechend mit einbeziehen.