Kann ich ein inklusives Du machen, im Gegensatz zu exklusivem?

273
CaptainSkyfish

Ich muss eine Du-Suche durchführen, bei der nur bestimmte Unterordner erfasst werden. Hier ist zum Beispiel die Verzeichnisstruktur:

du -b  0 ./678  21 ./679/536/Content_Repository_PoC_-_Main  73 ./Content_Repository_PoC_-_C-CDN_JIT_Packaging/679/536  255034 ./PoC_-_C-CDN_JIT_Packaging/680/13/processed_3348d8a9-a  201034 ./PoC_-_C-CDN_JIT_Packaging/683/13/processed_cec582f5-1  208034 ./PoCx/225/processed_cec27825-1 

Ich brauche es, um die Gesamtsumme NUR der Unterordner mit dem Wort "bearbeitet" im Unterordnernamen zurückzugeben (in diesem Beispiel also nur die unteren drei). Ich kann eine Vielzahl positiver Ergebnisse erwarten.

Mit anderen Worten, du --exclude='processed*'ich möchte so etwas nicht

du --exclude!='processed*' 
0

1 Antwort auf die Frage

0
xenoid

Mit finden:

find -type d -name 'processed*' exec du {} \; 

Wenn Sie die Gesamtgröße wünschen:

find -type d -name 'processed*' exec du -c {} + 

('+' hat alle passenden Dateien mit einem einzigen Befehl verarbeitet)

Wenn sich alle "verarbeiteten *" auf derselben Verzeichnisebene befinden, können Sie das Finden mit einigen Shells (bash, zsh) auch vermeiden:

du -c */*/processed* 
Vielen Dank, aber mit diesem Suchbefehl erhielt ich "find: Argumente für -type sollten nur einen Buchstaben enthalten." Ich sollte beachten, dass dies auf Red Hat Enterprise 6.6 ist. CaptainSkyfish vor 6 Jahren 0
Ich habe es schließlich mit einem modifizierten "find -name verarbeiteten * -exec du -bs {} +" zum Laufen gebracht. CaptainSkyfish vor 6 Jahren 0
Die Befehle wurden korrigiert ... bedeuten `find -type d` xenoid vor 6 Jahren 0