-
Addiere
Oft gewünscht, nie gehabt: das Addiere Shellscript.
Was machts: Zahlen reinwerfen - auch mehrere pro Zeile - Summe ausgeben. Mindestens so lebensnotwendig wie tac.
Warum?
Beispiel: Wieviel Platz verbraucht...?
Code:
find . -iname "*.avi" -iname "*.mpg" -exec du -sm "{}" \; | awk '{print $1}' | addiere
Oder:
Code:
du -sm syslog*gz | awk '{print $1}' | addiere
Das Script:
Code:
#!/bin/bash
sum=0
while read line ;do
set $line
while [ -n "$1" ]; do
((sum=$sum+$1))
shift
done
done
echo $sum
-
also bei du verstehe ich jetzt nicht warum man das braucht...
du -csm *
macht doch das selbe..
dass bei dem find das nicht klappt liegt eher daran, dass hier du immer nur einzeln gerufen wird. hier sollte xargs verwendet werden:
http://de.wikipedia.org/wiki/Xargs
aber natürlich war das als übung ganz gut ;)
-
Code:
~> Sum(){ s=$@;echo $((${s// /+})); }
~> Sum 1 2 3 4
10
~>
-
@Selene:
Nett. Tut aber nicht das, was ich oft will/brauche:
Code:
echo -e '1\n|2\n3\n' | Sum
Geht ned. Natürlich könnte man auch
Code:
Sum $( echo -e '1\n2\n3\n' )
schreiben, aber das ist unpraktisch.
@quinte:
Natürlich kenne ich xargs. Wenig schreiben ist hier Trumpf. Und es geht nicht nur um du. Ich will halt alles an Kommandokette, was mir eine Reihe von Zahlen rauswirft mal addieren.
-
Code:
~> echo -e '1\n2\n3' | awk '{sum=sum+$0}END {print sum}'
6
"Nett" bedeutet übrigens: "Halte dich da raus, Schwachkopf"
-
> "Nett" bedeutet übrigens: "Halte dich da raus, Schwachkopf"
Keine Sorge. Ich habe keinen Bedarf dich beleidigen zu wollen.
Tut mir leid, falls Du das als Beleidung aufgefasst hast.