Subject: Re: bug#28890: Painfully slow: DU.exe -Ssb %CD%

From: Bernhard Voelker <[email-masked]>
Date: Wed, 18 Oct 2017 22:53:03 +0200

tag 28890 notabug
close 28890
stop

On 10/18/2017 02:12 PM, Gavin Holt wrote:
> Hi
> 
> I am trying to use cmd batch file to list the size of all directories
> in my roaming user profile - so I an clean it out.
> 
> DU.exe works well and gives me the exact output I want - the sum of
> the size of the files in each directory EXCLUDING subdirectories. e.g.
> 
> P:\MyPrograms\EDITORS\Scite>du -Ssb %CD%
> 2641767 P:\MyPrograms\EDITORS\Scite
> 
> P:\MyPrograms\EDITORS\Scite\tools>du -Ssb %CD%
> 8834439 P:\MyPrograms\EDITORS\Scite\tools
> 
> I would use a for loop to iterate over all the directories, but
> testing with a single directory shows this command to be painfully
> slow.
> (dir /AD /B /S %USERPROFILE%)
> 
> Is there any way to optimize the DU function or an alternative you can
> suggest that gives the identical output.
> 
> I did read the link below - but the output is not what I wanted.
> 
> https://stackoverflow.com/questions/30513287/faster-way-to-get-folder-size-with-batch-script

Given that you have 'du.exe' from Cygwin (so that you have the
latest gear), I'd go with a combination of 'find' to get directory names
and 'du' to print the sizes; I'd also use --threshold=SIZE to exclude
directories smaller than SIZE:

  $ find . -depth -type d -exec du -hxSt 10M '{}' +

or with a pipe:
  $ find . -depth -type d -print0 | du --files0-from=- -hxS --threshold=10M

Finally, as you asked for Windows, I want to mention a very useful
graphical tool: "windirstat".

As this is more a question how to use du(1) - and not a bug - I'm
marking this issue as such in our bug tracker.

Have a nice day,
Berny