PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [bash]: Höchste Dateinummer finden?



beda22
12-04-2005, 14:51
Hallo,

ich hab ein Verzeichnis in dem Dateien mit fortlaufenden Nummern enthalten sind, also:
Bild_456.jpg
Bild_457.jpg
Bild_458.jpg
usw.

Ich möchte gerne mit einem Skript die weiteren Fotos bei der nächsten Nummer weiter nummerieren. Wie das Nummerieren funktioniert hab ich mir schon aus anderen Beiträgen raus gesucht. Aber wie finde ich die derzeit größte Nummer? Kann mir da bitte jemand einen Tipp geben?

Schöne Grüße
da Beda

peschmae
12-04-2005, 16:38
Nehmen wir mal an du bist im Verzeichnis mit den Bildern - da machst du das:


BIGGEST=0
for f in *; do
f=${f#Foto_}
f=${f%.jpg}
if [ $f -gt $BIGGEST ] ; then
BIGGEST=$f
fi
done


BIGGEST ist die Variable die die grösste Nummer enthält. Dann eine Scheife die alle Dateien durchgeht.
f=${f#Foto_} schneidet von vorne im Dateinamen den Foto_ weg (siehe auch da: http://www.tldp.org/LDP/abs/html/parameter-substitution.html#PATTMATCHING)
f=${f%.jpg} von hinten das .jpg
bleibt noch die Nummer die mit $BIGGEST verglichen wird.

MfG Peschmä

beda22
12-04-2005, 18:19
vielen Dank, das funktioniert.
da Beda

RapidMax
14-04-2005, 21:31
Normalerweise sortiert schon ls. Allerdings nicht nummerisch, was sich aber nur auswirkt, wenn du nicht immer dreistellige Zahlen hast (Bild_9.jpg, Bild_1001.jpg, etc.):

ls | tail -n 1
Soll nummerisch sortiert werden, hilft folgender Befehl:

ls |sort -t '_' -n -k 2 | tail -n 1

Gruss, Andy

beda22
29-04-2005, 07:33
...
f=${f%.jpg} von hinten das .jpg
...
Gibt es eine ähnlich einfache Methode immer die letzten 4 Zeichen einer Variable abzuschneiden? Dh ich möchte immer die Dateiendung (jpg oder mpg) und den Punkt abschneiden.

Auf der Seite die du angegeben hast finde ich nur die Erweiterung ab einer bestimmten Position.

Schöne Grüße
da Beda

moedule
29-04-2005, 16:04
sterne helfen ganz gut in der bash

also z.B. so
${f%.*}
schneidet alles ab was nach dem punkt kommt

moe

beda22
29-04-2005, 16:30
sterne helfen ganz gut in der bash


Irgendwie denk ich einfach zu kompliziert für die Bash.

Vielen Dank
da Beda