Veröffentlicht 22. Dezember 201014 j 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.
22. Dezember 201014 j Und wie sieht dein Ansatz mit einer while-Schleife aus? $ ls *.txt | while read file do echo $file done Bearbeitet 22. Dezember 201014 j von lupo49
23. Dezember 201014 j 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.
23. Dezember 201014 j Das geht viel kürzer: find . -name '*.txt' -type f -print0 | xargs -0 cat | wc -w
23. Dezember 201014 j 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.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.