Mit GNU du(dh unter nicht eingebettetem Linux oder Cygwin) können Sie die --excludeOption verwenden, um die Dateien auszuschließen, die nicht übereinstimmen sollen.
du -s --exclude='*.html' /var/foo
Wenn Sie *.pdfDateien positiv abgleichen möchten , müssen Sie eine andere Methode zum Auflisten der Dateien verwenden und dumindestens eine Ausgabezeile pro Argument sowie eine Gesamtsumme mit der Option anzeigen -c. Sie können rufen tailalle , aber die letzte Zeile zu entfernen, oder sed das Wort „total“ als auch zu entfernen. Verwenden Sie Platzhalter in der Shell, um die Dateien in diesem einen Verzeichnis aufzulisten.
du -sc /var/foo/*.pdf | tail -n1
du -sc /var/foo/*.pdf | sed -n '$s/\t.*//p'
Wenn Sie auch Dateien in Unterverzeichnissen durchlaufen müssen, verwenden Sie findoder verwenden Sie ein **/Muster, wenn Ihre Shell dies unterstützt. **/Führen Sie in Bash zuerst aus shopt -s extglobund beachten Sie, dass Bash-Versionen bis 4.2 symbolische Links zu Verzeichnissen durchlaufen. in zsh funktioniert dies sofort.
du -sc /var/foo/**/*.pdf | tail -n1
Eine zusätzliche Komplikation mit dem Fund Version ist , dass , wenn es zu viele Dateien sind, findlaufen dumehr als einmal, unter der Befehlszeile Längengrenze zu halten. Bei der Platzhaltermethode wird in diesem Fall eine Fehlermeldung angezeigt ("Befehlszeilenlängenbeschränkung überschritten"). Der folgende Code setzt voraus, dass Sie keinen passenden Dateinamen haben, der eine neue Zeile enthält.
find /var/foo -name '*.pdf' -exec du -sc {} + |
awk '$2 == "total" {total += $1} END {print total}'
du -sh /foo/*.pdf?