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

Post Reply
Message
Author
track

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

#1 Post by track »

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

User avatar
jochen
prolinux-forum-admin
Posts: 699
Joined: 14. Jan 2000 15:37
Location: Jülich
Contact:

#2 Post by jochen »

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

Code: Select all

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..."

Post Reply