How do I name a file from part of the file name read in?

13 views (last 30 days)
I would like to read in files from a directory, store their names, modify the files, and write out new files with a name based on the files read in. I have a solution that takes the first 8 characters of the read in file and uses that as part of the new written file. But, I would like the code to take the part of the name before a specific character is observed (an underscore "_") because the number of characters changes depending on the samples I'm analyzing. The file I read in is named "6145abc_acquired.txt" and I would like to name the written file "6145abc-ave100raw.txt".
Here's part of my current code:
files = dir('*.txt');
numfiles = numel(files);
for i=1:length(files)
filename = files(i).name;
[~,name] = fileparts(filename);
nameaves = name(1:8);
... in here I process the data creating the variable ave100...
dlmwrite([nameaves, '-ave100raw' '.txt'], ave100, '\t');
I would like to modify the name(1:8) to something that's more flexible and includes only what comes before the underscore "_".

Accepted Answer

AJ von Alt
AJ von Alt on 27 Jan 2014
The function strsplit will split a string into parts based on a delimiter.
nameaves = name(1:8);
namesplit = strsplit( name , '_' );
nameaves = namesplit{1};

More Answers (1)

Image Analyst
Image Analyst on 27 Jan 2014
Try this:
filename = '6145abc_acquired.txt'
underlineIndex = find(filename == '_', 1, 'first')
newFileName = sprintf('%s-ave100raw.txt', filename(1:underlineIndex-1))


Find more on File Operations in Help Center and File Exchange


Community Treasure Hunt

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

Start Hunting!