octave-maintainers
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

dir / ls routines return values


From: John W. Eaton
Subject: dir / ls routines return values
Date: Mon, 26 Jan 2009 23:20:30 -0500

On 25-Jan-2009, Daniel J Sebald wrote:

| The dir() and ls() routines return strings for file names in a directory, but 
they place breaks in file names with spaces, which ostensibly makes the 
routines not useful for programming.  [I'm not a fan of spaces in file names... 
one of the most confusing and messy conventions in computer programming.]
| 
| For example, try
| 
|   mkdir('dir with spaces and # @ $ % [ ]')
|   dir('./')
|   ls -1
|   d = ls -1
| 
| Note a couple things.  The list returned by dir and ls have line
| breaks, so there is no way to know exactly where line breaks and
| spaces are in files.  There is no robust way of using dir and ls
| that I see.

If you write

  x = dir ('./')

then you will get a structure array.  One of the fields is "name", and
I don't see a problem with spaces if you use this form.

| The second thing is that 'ls -1' gives a result that looks correct,
| spaces intact.  But 'ls -1' by itself does not return anything into
| 'ans'.  That's strange and inconsistent.

It's not uncommon for functions in Matlab (and Octave) to do different
things based on the value of nargout.  In the case of ls, if nargout
is zero, the result is printed.  If nargout is 1, it is returned.  I
don't see a bug here.

I'd recommend using the dir function if you are doing programming.
The ls function is handy for the command line though, so I think we
should keep it.  But I don't see a good enough reason to change the
way it works.

jwe


reply via email to

[Prev in Thread] Current Thread [Next in Thread]