listing folders in directory with specific strings

67 次查看(过去 30 天)
I have a directory full of folders. I want to only list (and count) those with a specific naming format that starts with a numerical string and not any other folders in that directory. How can I do this? for example: FolderA contains these subfolders
180705-France, 180705-Germany, refdata
I want to list and count only the folders under folder A that start with a numeric string. In this case, the list should return '180705-France' and '180705-Germany', and a length(dirlist) should return 2.
something like,
pathn =['D:\FolderA'];
list= dir([pathn '\1*']);
len =length(list);
would work, but I need it to work for any folder whose name begins with numbers 0-9.
I tried using regexp but couldn't figure out how to get it to work. If I figure it out, I'll post it here, but I'm sure someone already knows how to do this....thanks.
  2 个评论
Stephen23
Stephen23 2018-8-17
编辑:Stephen23 2018-8-17
Note that these square brackets do nothing at all:
pathn =['D:\FolderA'];
Square brackets are a concatenation operator, and that code is not concatenating anything together (the char vector is already a char vector). All that is needed is:
pathn = 'D:\FolderA';
Jorge Rivé
Jorge Rivé 2018-8-17
yes, thanks --I know...I started writing the question one way and then simplified it to avoid confusion. The path was a concatenation of strings before I changed it....

请先登录,再进行评论。

采纳的回答

Paolo
Paolo 2018-8-16
编辑:Paolo 2018-8-16
You can work around it with a dos command:
[status,cmdout] = dos("dir *")
list = regexp(cmdout,'\d{6}-[A-Za-z]+','match');
len =length(list);
or alternatively:
s = dir;
list =regexp({s.name},'\d{6}-[A-Za-z]+','match');
len = length(find(~cellfun(@isempty,list)));
  1 个评论
Jorge Rivé
Jorge Rivé 2018-8-17
编辑:Jorge Rivé 2018-8-17
thank you, the dos command version worked, but the alternative provided does not. list returns an array of empty cells.... Your first solution does the trick for me -- Thanks.

请先登录,再进行评论。

更多回答(1 个)

Fangjun Jiang
Fangjun Jiang 2018-8-16
dir() does not have the regexp option. I can think of this way
a=dir;
b=char({a([a.isdir]).name});
len=sum(isstrprop(b(:,1),'digit'))

类别

Help CenterFile Exchange 中查找有关 File Operations 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by