[NTLUG:Discuss] Re: Is there a command line utility which will report directory statistics?

Stuart Johnston saj at thecommune.net
Sat Jan 21 13:14:48 CST 2006


Leroy Tennison wrote:
> Chris Cox wrote:
> 
>> Leroy Tennison wrote:
>>  
>>
>>> Graham Wilson wrote:
>>>
>>>   
>>>
>>>> On Thu, Jan 19, 2006 at 06:20:47AM -0600, Leroy Tennison wrote:
>>>>
>>>>
>>>>     
>>>>
>>>>> Such things as number of files,
>>>>>  
>>>>>       
>>>>
>>>> find $dir -type f | wc -l
>>>>
>>>>
>>>>
>>>>     
>>>>
>>>>> number of subdirectories,
>>>>>  
>>>>>       
>>>>
>>>> find $dir -type d | wc -l
>>>>
>>>>
>>>>
>>>>     
>>>>
>>>>> size?         
>>>>
>>>> du
>>>>
>>>>
>>>>
>>>>     
>>>
>>> Thank you, that's exactly what I needed and would have never found by
>>> searching.  A couple of questions:
>>>
>>> Where is $dir documented?  I thought it was a reference to a BASH shell
>>> variable but couldn't find either 'dir' or 'DIR' using "set | less".
>>> Googling and trying Yahoo proved futile because both interpret the $
>>> somehow.
>>>
>>> Second, I take it that 'du' reports only in blocks rather than actual
>>> aggregates of sizes even if the '-b' switch is used, correct?  The
>>> reason I ask is that I'm looking for an equivalent of what the Evil
>>> Empire does when it calculates directory sizes.
>>>
>>> Again, thanks for the help.
>>>   
>>
>>
>> $dir is a variable... replace that with the directory to
>> recurse through.
>>
>> Could be the current directory (you can use . for that)...
>>
>> find . -type d | wc -l
>>
>>
>>
>> _______________________________________________
>> https://ntlug.org/mailman/listinfo/discuss
>>
>>  
>>
> Well, that's why I'm confused.  I ran it literally just as I received it 
> (didn't replace $dir with anything, just used it as-is) and it worked. 
> That's when I went looking for either 'dir' or 'DIR' in the environment 
> and checked 'man find' to see if $dir had special meaning to the 
> program.  Came up empty.  Then I tried Google and Yahoo only to find 
> that they treat '$' special somehow and return way too many hits where 
> $dir isn't even in the 'hit'.  At that point I turned to the group, 
> still no answer to this point.  The speculation I'm toying with now is 
> whether a dynamic variable is being created for the duration of 'find' 
> and destroyed at program termination.  Even if this is true (maybe a big 
> if) I don't have any idea how to confirm or deny it.

In this case, $dir is a "mental variable".  You're meant to do the 
variable substitution in your head as you type.

Of course, $dir is also interpreted as a shell variable so you could set 
it something like:

dir=/tmp
find $dir -type d

But in your case, $dir has no value so the shell turns your command into:

find  -type d

When you run find without a path specified, it will default to the 
current directory.

Hope that clears things up.




More information about the Discuss mailing list