Dies ist wahrscheinlich etwas Grundlegendes, aber ich bin nicht in der Lage, es zum Laufen zu bringen. Ich versuche, DU zu verwenden, um eine Gesamtgröße von Dateien abzüglich bestimmter Verzeichnisse zu erhalten. Ich muss ein bestimmtes Verzeichnis ausschließen, das aufgerufen wird, uploads
aber nicht jedes Verzeichnis, das aufgerufen wird uploads
. Zum Beispiel sieht meine Dateistruktur so aus:
/store
/uploads
/junk_to_ignore
/more_junk_to_ignore
/user_one
/uploads
/user_two
Ich kann den folgenden Befehl ausführen:
du -ch --exclude=uploads*
und es gibt mir die Dateigröße abzüglich aller "Uploads" -Verzeichnisse. Beim Versuch, bestimmte Verzeichnisse (und alle ihre Unterverzeichnisse) auszuschließen, scheitere ich jedoch. Ich habe versucht Variationen von:
du -ch --exclude=./uploads*
du -ch --exclude='/full/path/to/uploads/*'
Aber ich kann es nicht herausfinden. Wie schließe ich ein bestimmtes Verzeichnis aus?
command-line
disk-usage
Wille
quelle
quelle
username: store$ du -ch --exclude=./uploads
arbeitete (mit und ohne Platzhalter) für mich innerhalb des Geschäftsverzeichnisses. Führen Sie diesen Befehl genau und aus dem Speicherordner heraus aus? Und es muss der relative Pfad sein (der sieht / druckt), nicht absolut.Antworten:
Du hast es fast gefunden :)
Beachten Sie am Ende kein Sternchen. Das Sternchen bedeutet, dass alle Unterverzeichnisse unter "Upload" weggelassen werden sollten, nicht jedoch die Dateien, die sich direkt in diesem Verzeichnis befinden.
quelle
du -sb --exclude=./relative/path/to/uploads
) funktioniert bei mir nicht. Dies macht:du -sb --exclude relative/path/to/uploads
du
. Meins (OSX) hat nicht einmal--exclude
, sondern muss-I mask
"Dateien und Verzeichnisse ignorieren, die mit der angegebenen Maske übereinstimmen". In deinem Arbeitsbeispiel lässt du auch das weg=
, was mich weiter denken lässt, dass es nur deine Versiondu
ist, etwasdu
anders zu sein.Übergeben Sie zum Ausschließen mehrerer Verzeichnisse erneut das Flag --exclude.
quelle
du -ch --exclude={relative/path/to/uploads,other/path/to/exclude}
genial, die virtuellen Dateisysteme so zu überspringen
quelle
Wenn Sie unter macOS arbeiten müssen, installieren Sie GNU Coreutils mit dem folgenden Befehl.
Die meisten von Coreutils installierten Befehle
g
haben ein Präfix , da auf macOS ein BSD-Namensvetter vorinstalliert ist. Dann können Sie Folgendes tun.quelle