Ich weiß nicht, wie ich ls
das Ergebnis der 5. Spalte mit summieren kann awk
. Wenn ich addiere $bytesum+=...
, bricht das Programm offensichtlich ab. Irgendwelche Ideen?
bytesum=0
for i in `cat fileextensions.txt | sort | uniq`
do
ls -Rl "$folder" | grep $i | awk '{bytesum+=$5}; {print $9 " " $5}'
done
echo $bytesum
Antwort1
Mit GNU find benötigen Sie lediglich:
find . -type f -printf '%s\n' | awk '{s+=$0} END{print s+0}'
Bei jedem Fund:
find . -type f -exec stat -c '%s\n' {} \; | awk '{s+=$0} END{print s+0}'
Um Dateien mit einer bestimmten Erweiterung in einem bestimmten Verzeichnis („Ordner“ ist ein Windows-Begriff, in der UNIX-Terminologie ist es ein Verzeichnis) zu finden und zu statisieren, wie es anscheinend der Fall ist, würden Sie Folgendes versuchen:
dir='whatever'
ext='pdf'
find "$dir" -type f -name "*.${ext}" -printf '%s\n'
Antwort2
In Bash:
for size in `du *.jpg | cut -f1`; do sum=$((sum+size)); done; echo $sum
Integrieren Sie dies in Ihre Hauptschleife, indem Sie es .jpg
in meinem Beispiel in eine entsprechende Variable $i
in Ihrem Skript ändern.