[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: dir / ls routines return values
From: |
Jaroslav Hajek |
Subject: |
Re: dir / ls routines return values |
Date: |
Tue, 27 Jan 2009 08:42:24 +0100 |
On Tue, Jan 27, 2009 at 8:33 AM, Daniel J Sebald <address@hidden> wrote:
> John W. Eaton wrote:
>>
>> 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.
>
> Oh yeah, I didn't notice that. So guess there is a route. It's not as nice
> as a cell array, but it works.
>
Why it's not as nice? Converting the struct field to a cell array is a
trivial matter.
For instance, you can simply do (note the absence of space):
{dir('./').name}
to get the names.
> On an older version of Octave both the 0-output return and the 1-output
> return have the spaces replaced by line breaks.
>
Personally, I didn't even know ls could return a value, but if you can
create a patch improving backward compatibility, that would probably
be welcome. But anyway I suggest to do the programming with dir, which
has a well-defined output.
cheers
--
RNDr. Jaroslav Hajek
computing expert
Aeronautical Research and Test Institute (VZLU)
Prague, Czech Republic
url: www.highegg.matfyz.cz