How to find total MB of a directory plus all subdirectories

Les hlhowell at pacbell.net
Sat Mar 10 17:11:49 UTC 2007


On Sat, 2007-03-10 at 16:03 +0100, Nigel Henry wrote:
> On Friday 09 March 2007 01:13, Les wrote:
> 
> > > I have a question about du though. On the other machine where I wanted to
> > > find out the size of my soundfiles directory, du couldn't access it
> > > because it was named "Sounds Library" , without the quotes. I renamed it
> > > putting a hyphen between the 2 words, and then du accessed the directory
> > > ok, but all of the subdirectories are multi worded without any hyphens,
> > > and du didn't have any problem with them. Any reason why du will not
> > > access the main directory without hyphenated words, and yet has no
> > > problem with all the subdirectories?
> > >
> > > It's not a big deal, just puzzling.
> > >
> > > btw. The now Sounds-Library (with the hyphen) is on a separate harddrive
> > > so I have to run du as.
> > >
> > > du -sh /mnt/hdb5/Sounds-Library
> >
> > Hi, Nigel,
> >  The reason a command won't parse correctly with a space in the file
> > name is due to the tokenizer used by the shell.  It cannot deal with
> > spaces in filenames.  A space is the end of the word to the tokenizer
> > unless it is inside Quotes or escaped in some way.  Thus the command du
> > xxx yyy is going to look for files xxx and then yyyy.  This is true of
> > most systems.  otherwise there would be no way to chose which way to
> > parse a command with several arguments, for example:
> >  cat xxx yyy aaa bbb ccc ddd > temp.txt
> >
> >  In this case should the result consist of files xxx, yyy, zzz, bbb,
> > ccc, and ddd all being concatenated to a file called temp.txt, or should
> > it be xxx yyy, zzz bbb, and ccc ddd?  Moreover how would an unambiguous
> > error message tell the operator what was wrong?  What if files xxx, yyy
> > zzz, bbb zzz, and ddd were all present?  Is this what the operator
> > meant?
> >  This is why a good administrator doesn't put spaces in system control
> > files.  It leads to ambigousity when working on the system, leading to
> > errors and system corruption.  Typo's that would be caught might not be
> > if spaces are allowed into filenames.
> >
> >  On the other hand, once a directory is opened, the file names are read
> > via a special command designed for the OS, and if the OS permits spaces,
> > the entire file name up to the end charactor (generally control-Z or
> > NULL).  Thus the sub directories and files will be correctly handled.
> > But with spaces in the names, error messages regarding parsing, or
> > tracing the file contents may be ambiguous to the operator.  It is not
> > illegal to put spaces in filenames, but is should be considered a bad
> > practice, and avoided.  But it is your system, so YMMV.
> >
> > Regards,
> > Les H
> 
> Thanks Les for that very thorough explanation. I will be more carefull about 
> spaces in the future.
> 
> A related question, is. How do I find out how many files are in the 
> Sounds-Library directory, including all subdirectories. I looked at ls, but 
> that will only give a list of files, as far as I can see.
> 
> Thanks.
> 
> Nigel.
> 
> 
There may be better techniques, but I have used something like:
	% ls -al | grep -c '\n'
Which does the recursive list and then counts the lines.  This will
include the directories I think, but you can try it.  There are also
varients of the du, df, and ls commands that can provide this sort of
functionality.

	Try:
	% man -k file 

	To see a list of commands that work on files.  Some of the Admin
specific folks can offer help on this as well.

Regards,
Les H.  




More information about the fedora-list mailing list