Matlab重命名和剪切,movefile是大坑

使用Matlab的movefile函数进行重命名时,实际上执行的是复制再删除的过程,这在处理大量大文件时效率极低。推荐在Windows系统中使用rename函数或者system函数结合'move /Y'命令,以显著提高重命名和剪切速度。注意,剪切操作同样需要注意效率问题,使用'(move /Y)'可实现不提示覆盖的快速剪切。

一直用movefile重命名的总是觉得有点不对,

明明只是按一下F2然后粘贴一个文件名过去,

电脑居然干得比我还慢,

今天终于找到原因了。。。


movefile函数实际上干的是用新文件名复制一遍文件,然后把旧的再删了。。。。

所以用这个做重命名在文件特别多数据量特别大的时候其实是非常非常慢的。。。。


下面是推荐的用法,windows系统中可以用的rename函数(linux里也有对应的函数,用法稍有不同)


下面是一个例子和所需时间,文件夹里面一共64个文件1.95GB

cd C:\Users\lalala\lalala
aa = ls('*.nii');
for n = 1:size(aa,1)
%     movefile(aa(n,:),sprintf('%05d.nii',n));
    system(['rename',32,aa(n,:),32,sprintf('%02d.nii',n)]);
end


注:

图中的rename是matlab脚本的文件名,第一张图为windows自带rename用时,第二张图是matlab的movefile用时

文件夹里文件和大小都减小一半的时候耗时也都减小一半左右。。




顺便说一下,剪切也是大坑(但可能安全些)(下面说的都是在同一个盘符下操作,剪切文件,不同的盘之间剪切文件较慢,无提升)

用movefile干剪切的事。。。也是先复制过去再把原来的删了,这样做只有一个好处,安全——中途被打断的话源文件还在,

但是遇上稍微大一点的文件效率实在太低。。。

下面是windows下推荐的matlab用法:

system('move /Y oldpath\filename newpath\filename');

/Y是不提示覆盖,/-Y提示覆盖

这个就是windows的剪切了


MATLAB重命名文件可以通过多种方法实现。MATLAB 本身没有直接提供 `rename` 函数,但可以通过调用操作系统命令或使用内置函数来实现文件重命名。 ### 使用操作系统命令重命名文件 在 MATLAB 中,可以通过在命令前添加感叹号 `!` 来执行操作系统命令。例如,在 Windows 系统中可以使用 `rename` 命令,而在 Linux 系统中可以使用 `mv` 或 `rename` 命令。 - **Windows 系统示例:** ```matlab !rename oldfile.txt newfile.txt ``` - **Linux 系统示例:** ```matlab !mv oldfile.txt newfile.txt ``` 或者使用 `rename` 命令进行批量重命名: ```matlab !rename 's/oldstring/newstring/' *.txt ``` ### 使用 MATLAB 内置函数重命名文件 除了调用操作系统命令,还可以使用 `movefile` 函数来实现文件重命名[^5]。 ```matlab movefile('oldfile.txt', 'newfile.txt') ``` `movefile` 函数不仅可以重命名单个文件,还可以用于批量重命名文件。以下是一个批量重命名文件的示例: ```matlab path = 'E:\迅雷下载\烈火如歌\'; files = dir(strcat(path, '*.mp4')); len = length(files); for i = 1:len oldname = files(i).name; tmp1 = strfind(oldname, 'EP'); % 按需截取字符串 tmp2 = strfind(oldname, '.'); % 按需截取字符串 tmp3 = oldname(tmp1(1):tmp2(1)-1); % 提取子字符串 newname = strcat('[烈火如歌]', tmp3, '.2018.1080P.mp4'); % 合成新文件名 movefile([path oldname], [path newname]) % 重命名文件 end ``` ### 注意事项 - **路径问题:** 确保文件路径正确,避免因路径错误导致操作失败。 - **文件锁定:** 如果文件正在被使用,可能会导致重命名失败。 - **权限问题:** 在 Linux 系统中,如果用户没有足够的权限,可能无法执行重命名操作。 ### 示例代码 以下是一个简单的文件重命名函数,适用于单个文件: ```matlab function renameFile(oldName, newName) if exist(oldName, 'file') == 2 movefile(oldName, newName); disp(['File renamed from ' oldName ' to ' newName]); else error(['File ' oldName ' does not exist.']); end end ``` 调用函数: ```matlab renameFile('oldfile.txt', 'newfile.txt') ``` ---
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值