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來進行重命名操作。
有什么問題歡迎留言。
總結
以上是生活随笔為你收集整理的matlab命名文件保存在哪里,用Matlab给整个文件夹下的文件分别重命名的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: matlab对一行矩阵fft,MATLA
 - 下一篇: matlab imfilter函数,Ma