将大小写输入到 dir 的解决方法



我在Windows 5.1.0(x64(上使用Octave 10。我正在解析一系列目录,在每个目录中寻找文件名中带有"日志"的 Excel 电子表格。问题是这些文件是手动创建的,文件命名不一致:有时是"日志",有时是"日志",等等......

看起来作为输入传递给dir函数的字符串区分大小写,所以如果我没有正确的大小写,dir返回一个空结构。目前,我正在使用以下解决方法,但我想知道是否有更好的方法(首先,我还没有捕获所有可能的大写/小写组合(:

logbook = dir('*LogBook.xls*');
if isempty(logbook)
logbook = dir('*logbook.xls*');
if isempty(logbook)
logbook = dir('*Logbook.xls*');
if isempty(logbook)
logbook = dir('*logBook.xls*');
if isempty(logbook)
error(['Could not find logbook spreadsheet in ' dir_name '.'])
end
end
end
end

您需要获取文件名列表(通过readdirdirls(,然后在该列表中搜索字符串。如果使用readdir,可以这样完成:

[files, err, msg] = readdir ('.'); # read current directory
if (err != 0)
error ("failed to readdir (error code %d): %s", msg);
endif
logbook_indices = find (cellfun (@any, regexpi (files, 'logbook'));
logbook_filenames = files(logbook_indices);

一个不太标准的方法可能是:

glob ('*[lL][oO][gG][bB][oO][kK]*')

最新更新