Find files of a certain extension and populate a structure field with those file names.
    12 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Allen Hammack
 el 18 de Mzo. de 2022
  
    
    
    
    
    Comentada: Voss
      
      
 el 18 de Mzo. de 2022
            I have a directory with multiple .txt files. I want find all those .txt files and create a structure field with the names of those files. I've tried the following:
>> dir(strcat(pwd,'\','*.txt'))
Test_1.txt  Test_2.txt  Test_3.txt  
>> struct1.file_names = dir(strcat(pwd,'\','*.txt'))
struct1 = 
  struct with fields:
    file_names: [3×1 struct]
>> struct1.file_names
ans = 
  3×1 struct array with fields:
    name
    folder
    date
    bytes
    isdir
    datenum
I don't understand why these three commands:
dir(strcat(pwd,'\','*.txt'))
struct1.file_names = dir(strcat(pwd,'\','*.txt'))
struct1.file_names
produce different outputs. I also don't know how to populate struct1.file_names with the names of my .txt files. Can someone please help?
0 comentarios
Respuesta aceptada
  Scott MacKenzie
      
 el 18 de Mzo. de 2022
        
      Editada: Scott MacKenzie
      
 el 18 de Mzo. de 2022
  
      Your second command is wrong.  The dir command returns a structure.  You don't need to append ".file_names".  The filenames are part of the structure returned by dir.  Try this:
struct1 = dir(strcat(pwd,'\','*.txt')) % show the structure returned by dir
struct1.name                           % show the filenames within the structure returned by dir
2 comentarios
Más respuestas (1)
  Voss
      
      
 el 18 de Mzo. de 2022
        dir() with no output argument (i.e., not assigning the result to any variable) displays the result to the command line.
S = dir() with an output argument (i.e., assigning to the variable S in this case) gives you an array of structs, each element of which corresponds to one item (that is, one file or folder) and contains the file (or folder) name as well as other information.
Assigning the output of your dir() call (rewritten here to use fullfile()) to a variable seems like it will give you the information you want
struct1 = dir(fullfile(pwd(),'*.txt'))
names = {struct1.name}
struct1 = dir() % get everything, not just .txt files
names = {struct1.name}
2 comentarios
Ver también
Categorías
				Más información sobre File Operations en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!