Wie summiert man iterativ Dateigrößen mit gegebenen Dateierweiterungen?

Wie summiert man iterativ Dateigrößen mit gegebenen Dateierweiterungen?

Ich weiß nicht, wie ich lsdas 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 .jpgin meinem Beispiel in eine entsprechende Variable $iin Ihrem Skript ändern.

verwandte Informationen