我想从文件名中删除'-2'
,如下所示:
EID-NFBSS-2FE454B7-2_TD.eeg
EID-NFBSS-2FE454B7-2_TD.vhdr
EID-NFBSS-2FE454B7-2_TD.vmrk
EID-NFBSS-3B3BF9FA-2_BU.eeg
EID-NFBSS-2FE454B7-2_PO.txt
因为您可能会看到文件的名称不同,并且还有不同类型的扩展名。我想要做的就是从所有文件名中删除'-2'
。我试着用这个:
pattern = '-2';
replacement = '';
regexprep(filename,pattern,replacement)
我在控制台中得到了结果,但经过多次尝试,我不知道如何“说”MATLAB在同一位置切换电影名称。
答案 0 :(得分:0)
@excaza在钱上点击了它。您必须通过dir
探测所需目录以获取文件列表,然后遍历每个文件名并删除所有出现的-2,然后使用movefile
重命名该文件,并{{3删除旧文件。
想到这样的事情:
%// Get all files in this directory
d = fullfile('path', 'to', 'folder', 'here');
directory = dir(d);
%// For each file in this directory...
for ii = 1 : numel(directory)
%// Get the relative filename
name = directory(ii).name;
%// Replace any instances of -2 with nothing
name_after = regexprep(name, '-2', '');
%// If the string has changed after this...
if ~strcmpi(name, name_after)
%// Get the absolute path to both the original file and
%// the new file name
fullname = fullfile(directory, name);
fullname_after = fullfile(directory, name_after);
%// Create the new file
movefile(fullname, fullname_after);
%// Delete the old file
delete(fullname);
end
end
这背后的逻辑非常简单。首先,字符串d
确定要搜索文件的目录。 delete
用于按部分构建路径。这很重要的原因是因为这允许代码与平台无关。在操作系统之间划分目录之间的界限是不同的。例如,在Windows中,角色为\
,而在Mac OS和Linux上,角色为/
。我不知道你正在运行哪个平台,所以fullfile
在这里会很有用。只需获取目录的每个部分,并将它们作为单独的字符串放入fullfile
。
现在,使用dir
查找您选择的此目录中的所有文件。用您想要的路径替换/path/to/folder/here
。接下来,我们迭代所有文件。对于每个文件,我们得到相对文件名。 dir
包含有关每个文件的信息,您最需要的字段是name
属性。但是,此属性是相对的,这意味着只给出了文件名本身,而没有给出存储此文件的完整路径。之后,我们使用regexprep
来完成替换-2
的所有实例。
下一点很重要。在我们尝试更改文件名后,如果文件不一样,我们需要通过简单地将旧文件复制到更改名称的新文件来创建新文件,我们删除旧文件文件。此处的函数fullfile
有助于在不包含您正在查找的文件的目录中运行此脚本的可能性,建立文件所在位置的绝对路径。
我们使用fullfile
查找旧文件和新文件的绝对路径,使用movefile
创建新文件,使用delete
删除旧文件。