Directory Size

Vino vino.bheeman at hotmail.com
Wed Dec 6 14:49:48 UTC 2017


On Wednesday, 6 December 2017 at 09:16:56 UTC, Andrea Fontana 
wrote:
> On Tuesday, 5 December 2017 at 17:21:29 UTC, Vino wrote:
>> Hi All,
>>
>>  Is there any better ways to get the size of folders , The 
>> below code perfectly works , but i need return type as 
>> Array!(Tuple!(string, string)) rather then using the 
>> "Result.insertBack(d); 
>> Result.insertBack(to!string(SdFiles[].sum))" as per the below 
>> example.
>>
>> E.g:
>> Array!(Tuple!(string, string)) Result;
>> Result = (d, to!string(SdFiles[].sum));
>>
>> Program:
>> import std.algorithm: filter, map, sum, uniq;
>> import std.container.array;
>> import std.file: dirEntries, SpanMode, isDir, isFile;
>> import std.stdio: writeln;
>> import std.typecons: tuple, Tuple;
>> import std.conv: to;
>> /******************************************/
>> /* Sub Function : Size of Dir List        */
>> /******************************************/
>> auto mSize () {
>> 	string FFs = "C:\\Temp\\BACKUP";
>> 	Array!string Result;
>> 	auto dFiles = Array!string ((dirEntries(FFs, 
>> SpanMode.shallow).filter!(a => a.isDir)).map!(a => a.name));
>> 	foreach (d; dFiles[]) 	{
>> 		auto SdFiles = Array!ulong((dirEntries(d, 
>> SpanMode.depth).filter!(a => a.isFile)).map!(a => a.size));
>> 		if (SdFiles[].sum / 1024 / 1024  > 30) { 
>> Result.insertBack(d); 
>> Result.insertBack(to!string(SdFiles[].sum)); }
>> 								}
>> 		return Result;
>> }
>>
>> void main() {
>> writeln(mSize[]);
>> }
>>
>> From,
>> Vino.B
>
> Something like:
>
> auto mSize () {
> 	string FFs = "C:\\Temp\\BACKUP";
> 	
>    return dirEntries(FFs, SpanMode.shallow)
>    .filter!(a => a.isDir)
>    .map!(a => tuple(a.name, 
> a.dirEntries(SpanMode.depth).filter!(a=>a.isFile).map!(a => 
> a.size).sum))
>    .filter!(a => a[1] > 1024*1024*30)
>    .map!(a => tuple(a[0], a[1].to!string))
>    .array;
> }
>
> ?

Hi Andrea,

   Thank you very much, as your code is pretty good for our 
scenario, just one request, the above is a part of our main code 
where we have many such sub code and all of our sub code use the 
container array(std.container.array) rather than standard 
array(std.array), so can you please guide me on how to implement 
the same code using the container array.

From,
Vino.B.



More information about the Digitalmars-d-learn mailing list