opteronfx Geschrieben 22. Dezember 2010 Geschrieben 22. Dezember 2010 Hallo Leute, ich bin neu hier, hoffentlich bin ich im richtigen tread. Ich habe in der Uni eine Aufgabe zum Shellskripting bekommen. Schreiben Sie eine Shellprozedur, die die Anzahl der worte von allen Dateien in einem Verzeichnis in entsprechender Weise ausgibt z.B. in der Form: "die Anzahl der Worte un Datei dateiname ist ###" So ich habe diese Aufgabe mit einer for-Schleife gelöst. Mit while-Schleife komme ich leider nicht weit. Hier mal die Lösung mit der for-Schleife: #! /bin/bash #Aufgabe 1 - Uebungsblatt 6 #set x gesamtzahl=0 for datei in *.txt do anzahl=`less $datei | wc -w` echo -e "Die Anzahl der Worte in Datei $datei ist $anzahl" gesamtzahl=`expr $anzahl + $gesamtzahl` echo -e "bis jetzt wurden $gesamtzahl Wörter gezählt" done Danke für eure Bemühungen. Gruß, Vitaly. Zitieren
lupo49 Geschrieben 22. Dezember 2010 Geschrieben 22. Dezember 2010 (bearbeitet) Und wie sieht dein Ansatz mit einer while-Schleife aus? $ ls *.txt | while read file do echo $file done Bearbeitet 22. Dezember 2010 von lupo49 Zitieren
opteronfx Geschrieben 23. Dezember 2010 Autor Geschrieben 23. Dezember 2010 Hallo, danke für schnelle antwort. Also mein Ansatz war anders: files=`dir *.txt | wc -w` # anzahl der dateien ermitteln helpVar=`find *.txt` while [ $files -gt 0 ] do ----------------- files=$(($files-1)) done aber ich kam einfach nicht auf das innere der while schleife. Ich bedanke mich noch mal. Frohe Weihnachten. MfG, Vitaly. Zitieren
flashpixx Geschrieben 23. Dezember 2010 Geschrieben 23. Dezember 2010 Das geht viel kürzer: find . -name '*.txt' -type f -print0 | xargs -0 cat | wc -w Zitieren
gg0815 Geschrieben 23. Dezember 2010 Geschrieben 23. Dezember 2010 for str in $(printf "%s_%s\n" $(wc -w *.txt));do if [[ ${str#*_} == insgesamt ]];then printf "die Anzahl der Wörter insgesamt ist %s\n" ${str%%_*};else printf "die Anzahl der Wörter in Datei %s ist\t%i\n" ${str#*_} ${str%%_*};fi;done vieleicht noch nen bisschen die Formatierung aufhuebschen. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.