matlab命名文件保存在哪里,用Matlab给整个文件夹下的文件分别重命名

从读硕士以来一直用“期刊名字+年份+论文名字”的方式来给所有PDF文档命名,后来发现其实把年份放在前面会更好,一方面对于年份的记忆其实比期刊名字更强烈,在搜寻一篇论文时总是先想到年份,再想到期刊。另一方面,也是更主要的,是由于这样的命名方式,可以在文档中一目了然地看到这个领域(我是按领域来细分子文件夹的)在不同年份的发文量,也会对某篇论文在这个领域的发表先后有一个很直观的印象。但是因为收集的论文越来越多(超过1000篇),所以总是迟迟没有动手修改。

今天决定批量修改一次,用最容易操作的Matlab。

我之前的命名格式是“期刊名年份-论文名字”,比如“Nature2015-Deep Learning”,也有少部分是“Nature2015_Deep Learning”,我希望修改后的名字统一变为”2015-Nature-Deep Learning",所以代码的主要思路就是先找出文件名中的分隔符“-”或“_“,然后把前面的"Nature"、“2015”和后面的“Deep Learning"分别提取出来做重新排列。

下面是代码:

dbstop if error

% clear all

dir_struct = dir('*.pdf');%调出当前目录下所有的pdf文件信息

for i = 1:length(dir_struct)%遍历每一个文件

name = dir_struct(i).name;

if isletter(name(1)) %因为有些年代太过久远的文档我在命名时直接用年份,没有加期刊名,所以要先确认当前文件名是以期刊名字开头的

separator = find(name=='-');%寻找文件名中的“-”

if isempty(separator)

separator = find(name=='_');%如果没有就找“_”

if isempty(separator)

continue%如果都没有,就说明这个文件名不是我们要修改的类型,直接跳到下一个文件

end

end

index = separator(1);%提取出第一个分隔符的位置

journal = [];%存放期刊名字

year = [];%存放年份

article = [];%存放论文名字

for j = 1:index-1%遍历分隔符前面的每个字符

if isletter(name(j))%如果是字母,就放到期刊名字里

journal = [journal,name(j)];

else%如果是数字,就放到年份里

year = [year,name(j)];

end

end

for j = index+1:length(name)%遍历分割符后面的内容,存为期刊名字

article = [article,name(j)];

end

old_name = name;

new_name = [year,'-',journal,'-',article];

if ~strcmpi(old_name,new_name)%可能改了一部分文件之后报错,调整后重新运行程序,所以要先把那些已经修改过名字的文件过滤掉,否则matlab会报错

movefile(old_name,new_name)

end

end

end

网上有很多教程都是调用windows的命令来重命名,但是考虑到跨平台的兼容性,我最后用了matlab自己的一个函数movefile来进行重命名操作。

有什么问题欢迎留言。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值