Dateien anhand der Anzahl der enthaltenen Wörter vergleichen und sortieren

Antworten
Nachricht
Autor
track

Dateien anhand der Anzahl der enthaltenen Wörter vergleichen und sortieren

#1 Beitrag von track » 25. Okt 2006 20:31

Moin moin!
ich versuche hier grade ein kleines script zu schreiben, das Dateien eines gegebenen Verzeichnisses anhand der Anzahl der enthaltenen Wörter vergleicht und sortiert!

da ich in diesem bereich noch ein anfänger bin, hab ich erst mal so versucht!
#!/bin/bash
wc -w $1 @ 2>/dev/null | egrep -i '*.[^txt]'| egrep -i '^*' | sort -r
es sollten also die text dateien filtriert werden und die ordner auch, sonst ausgabe aller dateien die eine endung haben(bsp: xxx.qwe)
sollte eigentlich in einer zeiler alles passen nichts kompliziertes dachte ich :)
kann mir einer evt. ein tipp geben

Benutzeravatar
jochen
prolinux-forum-admin
Beiträge: 699
Registriert: 14. Jan 2000 15:37
Wohnort: Jülich
Kontaktdaten:

#2 Beitrag von jochen » 27. Okt 2006 7:33

Ich kann nicht behaupten, Deine Aufgabenstellung 100%ig verstanden zu haben, aber meine persönliche Lösung sähe so aus:

Code: Alles auswählen

ls | grep '\.txt$' | xargs wc -w | sed -e '$d' | sort -rn
ls liefert die Dateiliste, grep fischt die Dateien mit Endung ".txt" heraus. xargs bastelt daraus ein wc-Kommando mit allen übriggebliebenen Dateinamen als Argument. Da wc aber als letzte Zeile immer noch die Gesamtsumme aller Wörter über alle Dateien ausgibt (und man bei wc leider nicht unterdrücken kann), löscht das sed-Kommando "$d" die letzte Zeile des wc-Outputs. Mittels sort werden die Zeilen dann sortiert, die numerisch (-n) größten Werte zuerst (-r).

Diese Lösung ist nicht nicht ganz wasserfest: Die Anzahl der Dateien im Verzeichnis darf zwar beliebig sein, aber Dateinamen mit Lehrzeichen im Namen sind ein Problem. Aber dass überlasse ich Dir zur Übung. :)

Trifft das soweit den Punkt, den Du meintest?

Jochen
Die grösste Lüge der EDV? "Mal eben..."

Antworten