Hallo, Am Thu, 10 Jan 2013, Sebastian Reinhardt schrieb:
Ich habe das jetzt mit der "händisch" erstellten Datei mit der "DOS/Windows Zeilenumbruch"- Einstellung im kwrite noch mal probiert. Siehe da: Es geht! Es lag also an den Zeilenumbrüchen.
Wie bekomme ich das per Skript hin? Gibt es da eine Möglichkeit das zu erzeugen?
Hat dir Christian schon am 10.1. um 8:49 geschrieben! Zitat: | Falls Du testweise eine dirinfo.txt im DOS-Format anlegen willst, mach | aus dem printf("...\n" einfach ein printf("...\r\n" ... und ich schrub schon am 9.1. um 14:18: | Vielleicht ist es evtl. sogar was triviales wie ein Zeilenumbruch mit | nur dem Unix-'\n' statt dem DOS/Win '\r\n' ... Mich würde dennoch interessieren, ob es egal ist, wie die 8.3 Dateinamen erzeugt werden, d.h. ob's auch so wie in meiner ersten Mail angedeutet mit "erste 8-$(length LfdNR) Zeichen + '~' + LfdNR [1] Und ausnahmsweise hatte ich an Christans Script mal fast nix auszusetzen :) Einzig das "nullen" der Felder 1-5 könnte man vereinfachen. Statt fname=$1; ext=$2; $1=""; $2=""; $3=""; $4=""; $5=""; ein fname=$1; ext=$2; $1=$2=$3=$4=$5=""; Ich hab zwar noch ein paar andere Varianten angetestet, z.B.: $ MTOOLS_LOWER_CASE=0 mdir -a -i t.flp | gawk ' BEGIN { IGNORECASE=1; } $2 == "MP3" { fname = $1; ext = $2; $1 = $2 = $3 = $4 = $5 = ""; sub("^\\s*",""); printf("%s.%s:%s\r\n", fname, ext, $0); }' die etwas performanter sein müßte[2] (ohne 'MTOOLS_LOWER_CASE=0 mdir ...' braucht's ne Regex um $2 zu matchen, z.B.: BEGIN { IGNORECASE=1; } $2 ~ /^mp3$/ { ... Oder eben die Variante von Christian, wobei man die auch noch um die Anker drumrum ergänzen sollte "($2 ~ /^[Mm][Pp]3$/ ...'. Die Zusatzbedingung '&& !/<DIR>/' halte ich für überflüssig. Achso, ja, ein paar ganz andere Ansätze die mdir-Ausgabe zu parsen hab ich auch noch angetestet, die waren aber alle nix, v.a. wg. evtl. Leerzeichen und anderem Whitespace im langen Dateinamen, selbst wenn man sich da ein 'join' von $6 bis $NF bastelt taugt das nix, weil mehrere Leerzeichen, Tabs und sonstiges zu jew. einem " " kollabiert werden. Da könnte man dann gleich ':' als FS verwenden und dann alles bis zur Stunde und alles ab Minute durch ein 'sub("^\d\d\s*","")' jagen. Das würde funktionieren. Außer bei Dateien mit Whitespace am Anfang. Ergo: Christians Ansatz (bzw. meine Variante davon) ist dann doch einiges sinnvoller. -dnh [1] wenn du mehr als 9 Dateien mit den gleichen ersten 6 Zeichen anlegst, mußt du die Nr zweistellig machen ... usw. Näheres in den WP Artikeln in meiner ersten Mail in diesem Thread. [2] einfaches String-Match als Adresse, einfaches "sub" statt "gensub". Dürfte aber erst bei zu erstellenden Listen von einigen tausend .mp3 meßbar werden ;) Und soviele mp3 will ich zumindest nicht in einem Ordner haben, unabhängig vom Dateisystem. -- The probability of someone watching you is proportional to the stupidity of your action. -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org