首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Matlab中基于文件名的文件复制

Matlab中基于文件名的文件复制
EN

Stack Overflow用户
提问于 2013-07-23 15:04:40
回答 3查看 3.8K关注 0票数 2

我希望将文件从一个文件夹复制到另一个文件夹,但前提是文件名以字母“w”开头。下面是我到目前为止想出的脚本,但它不起作用。脚本中有两个循环,因为有三个文件夹(即subjects)中的文件,并且每个文件夹都有四个子文件夹,我要在它们中扫描‘w*’文件。文件应该从"folderx“复制到"folderxnew”。

代码语言:javascript
运行
复制
for n_subj = 1:3

   cwd_all = { '/data/subject1/';      '/data/subject2';      'data/subject3'; };

   cwd = cwd_all{n_subj};

   dirs{1}='folder1';
   dirs{2}='folder2';
   dirs{3}='folder3';
   dirs{4}='folder4';

   dirt{1}='folder1new';
   dirt{2}='folder2new';
   dirt{3}='folder3new';
   dirt{4}='folder4new';

   for nses=1:4

        dir = dirs{nses};

        files = dir('w*');

        copyfile(files, dirt{nses},'f');

    end

end
EN

回答 3

Stack Overflow用户

发布于 2013-07-23 15:14:40

你能试试这个循环吗:

代码语言:javascript
运行
复制
for nses=1:4

    files = dir([dirs{nses} '\w*']);

    for i =1:length(files)
        copyfile(files(i).name, dirt{nses},'f'); 
    end

end
票数 0
EN

Stack Overflow用户

发布于 2014-07-26 01:40:01

首先,尽量不要在循环中定义常量(尽管这与结果无关)。

其次,您的原始代码在nses循环的第i次迭代中创建了一个名为"dir“的变量。这将覆盖下一步要调用的"dir“函数。

最后,所有代码都不包含完整路径命名,这意味着当您调用"copyfile(files ...)“时,MATLAB正在查找您当前的工作目录。您需要传递cwd和dirs(nses)的正确连接。

票数 0
EN

Stack Overflow用户

发布于 2017-07-16 03:18:00

我遇到过许多这样的情况,需要特定的文件复制和重命名任务。因此,我在matlab中编写了一个函数"easycopy“(以及姊妹函数"easyrename"),以提供一种使用列表和通配符复制和重命名文件的便捷方法。

您可以在Matlab文件交换上查看它们:

[https://www.mathworks.com/matlabcentral/fileexchange/63417-easycopy][1]

[https://www.mathworks.com/matlabcentral/fileexchange/63586-easyrename][1]

下面是它在这种情况下的样子:

那个?带有"subject“的通配符匹配目录subject 1、2、3和"folder?”匹配folder1、2、3、4。然后目标表达式使用"...subject?\folder?new...“要创建文件夹...subject(1,2,3)\folder(1,2,3,4)new...第一个来源"?“匹配第一个"?“在目标表达式中,第二个"?“匹配第二个目标"?“以此类推。"w*.txt“匹配所有"w”源文件,并将它们复制到"w*.txt“目标。

代码语言:javascript
运行
复制
easycopy('c:\data\subject?\folder?\w*.txt','c:\data\subject?\folder?new\w*.txt')
COPYING FILES .....

Copying c:\data\subject1\folder1\wicked.txt
To c:\data\subject1\folder1new\wicked.txt

Copying c:\data\subject1\folder2\wicked.txt
To c:\data\subject1\folder2new\wicked.txt

Copying c:\data\subject1\folder3\wicked.txt
To c:\data\subject1\folder3new\wicked.txt

Copying c:\data\subject1\folder4\wicked.txt
To c:\data\subject1\folder4new\wicked.txt

Copying c:\data\subject2\folder1\wicked.txt
To c:\data\subject2\folder1new\wicked.txt

Copying c:\data\subject2\folder2\wicked.txt
To c:\data\subject2\folder2new\wicked.txt

Copying c:\data\subject2\folder3\wicked.txt
To c:\data\subject2\folder3new\wicked.txt

Copying c:\data\subject2\folder4\wicked.txt
To c:\data\subject2\folder4new\wicked.txt

Copying c:\data\subject3\folder1\wicked.txt
To c:\data\subject3\folder1new\wicked.txt

Copying c:\data\subject3\folder2\wicked.txt
To c:\data\subject3\folder2new\wicked.txt

Copying c:\data\subject3\folder3\wicked.txt
To c:\data\subject3\folder3new\wicked.txt

Copying c:\data\subject3\folder4\wicked.txt
To c:\data\subject3\folder4new\wicked.txt

DONE !
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17803492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档