sortieren

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
kevin
Beiträge: 325
Registriert: 08.11.2004 00:03:24

sortieren

Beitrag von kevin » 10.09.2006 13:03:56

da sind ein paar viele dateien mit verschiedenen namen .. alle enden aber hinten auf die selbe art
alle enden mit "8-zahlen"__"4-zahlen"
( beispiele : 20060805__1192 oder 20041103__0863 usw..)
der 8 stellige block ist ein datum und der 4 stellige block einfach nur eine nummer)
diese dateien sind jetzt in mehreren verzeichnissen
mit welchem programm kann ich die datei endungen jetzt z.b. einmal nach dem datum sortieren
so das ich eine auflistung bekomme mit dem niedrigstem datum und oder mit dem hoechsten datum
und wie kann ich die nach der 4 stelligen nummer sortieren lassen?
gibts da nen tool fuer die console was soetwas kann?

Benutzeravatar
finupsen
Beiträge: 1327
Registriert: 21.04.2004 20:07:05
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von finupsen » 10.09.2006 14:22:30

Hallo,

Ist schwer zusagen, da du kein trennzeichen zwischen der definierten endung und namen
gegeben hast.

beispiel:

hallo_20060805_1192

sortieren nach datum (feld2) aufsteigend:
find -type f | sort -t'_' -n -k2

sortieren nach endung (feld3) aufsteigend
find -type f | sort -t'_' -n -k3

Man muss erst den dateinamen in felder einteilen und das geht nur mit einem
trennzeichen. "__" ist leider kein ordentliches trennzeichen !

temporäre lösung:
find -type f | sed -e 's/__/_/g' | sort .....
Niemand hat vor eine zentrale Datensammelbehörde aufzubauen. Es handelt sich vielmehr um dezentrale IT-Systeme die miteinander vernetzt werden.
... und Wasser ist naß.

kevin
Beiträge: 325
Registriert: 08.11.2004 00:03:24

Beitrag von kevin » 10.09.2006 15:15:48

njein .. doch

alle dateinamen enden gleich, alle enden mit 4unterstrichen 8stelligemdatum 2unterstriche 4stelligenummer

meinst du die 4unterstriche vor dem datum vielleicht mit "trennzeichen"?

dateinamen sehen z.b. so aus

gutentag.dat____20060808__0512
alles.xyz____20050101__0449
..usw


____12345678__1234

eine solche endung gibt es bei jeder datei

.

Benutzeravatar
finupsen
Beiträge: 1327
Registriert: 21.04.2004 20:07:05
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Dortmund
Kontaktdaten:

Beitrag von finupsen » 10.09.2006 15:22:03

ja, die sollten so aussehen wie im oben genannten beispiel. Dann kann man das auch gut
auftrennen und entsprechend sortieren.

Oder du benutzt ein temporäre lösung (wie oben geschrieben) wie z.B.:

find -type f | sed -e 's/__/_/g' | sort .....

Der ausdruck "sed -e 's/__*/_/g'" sucht nach __* und ersetz es durch _ . Dadurch kannst
du mit sort option -t das trennzeichen _ verwenden. Alles andere wie z.B. __ oder gar _____
sind keine ordentlichen trennzeichen !!! Warum nicht ? weil ein ____ kein trennzeichen ist
sondern einfach aneinander geklebte characters. Sort option -t benötigt aber nur und
ausschliesslich ein einziges trennzeichen (ein character).

lösung also:
nach endung (numerischer ausdruck am ende) sortieren:
find -type f | sed -e 's/__*/_/g' | sort -t'_' -n -k3
nach datum:
find -type f | sed -e 's/__*/_/g' | sort -t'_' -n -k2
Niemand hat vor eine zentrale Datensammelbehörde aufzubauen. Es handelt sich vielmehr um dezentrale IT-Systeme die miteinander vernetzt werden.
... und Wasser ist naß.

Antworten