matlab 重命名文件和文件夾


1、查看文件存在  dir() 

若存在,返回文件信息
     dir(‘test.txt’) %查看當前目錄是否存在test.txt文件
dir(‘C:\test.txt’) %查看指定目錄是否存在test.txt文件
2、查看文件存在exist()
使用方法同dir
若不存在,返回0
若存在,則根據返回一個非0值,具體請help exist
3、文件重命名eval()
 matlab 中 strrep 函數可以更改文件擴展名
使用方法
eval(['!rename' , ‘,test.txt’ , ‘,test2.txt’]); 
注意后文件名前有個,(逗號)
網上有人說可以使用變量操作,eval(['!rename' , s, t]);
本人表示沒有成功,不知道為什么
4、文件重命名movefile
可以使用變量,如:
movefile(s,t);

 

matlab中movefile和copyfile的重要用途

clear  
clc  
  
cd('C:\Documents and Settings\Administrator\桌面\matlab\test'); % 設置當前目錄  
%  此時test文件夾中有:文件夾1, 文件夾2, 文件1.txt, 文件2.txt  
  
movefile('1.txt', '11.txt');  % 把1.txt剪切成11.txt(1.txt不存在了),實際上相當於改名  
copyfile('2.txt', '22.txt');  % 把2.txt復制成22.txt(2.txt依然存在)  
  
movefile('11.txt', '1');      % 把11.txt剪切到文件夾1中  
copyfile('22.txt', '2');      % 把22.txt復制到文件夾2中  

一直用movefile重命名的總是覺得有點不對,速度很慢

movefile函數實際上干的是用新文件名復制一遍文件,然后把舊的再刪了。。。。

所以用這個做重命名在文件特別多數據量特別大的時候其實是非常非常慢的。。。。

      順便說一下,剪切也是大坑(但可能安全些)(下面說的都是在同一個盤符下操作,剪切文件,不同的盤之間剪切文件較慢,無提升)用movefile干剪切的事。也是先復制過去再把原來的刪了,這樣做只有一個好處,安全——中途被打斷的話源文件還在,但是遇上稍微大一點的文件效率實在太低。

clear all
clc
folder_name=uigetdir; 

% 手動打開要修改名稱的文件夾的上一層文件夾
folder=dir(folder_name);
oldname=cell(length(folder)-2,1);
for ii=3:length(folder)
   oldname{ii-2}=folder(ii).name;
end

% 提取出要修改文件夾的名稱
newname=cell(length(oldname),1);
for ii=1:length(oldname)
   a=oldname{ii};
   newname{ii}=a(2:end);

   % 新的文件夾名稱 
   movefile([folder_name '\' oldname{ii}],[folder_name '\' newname{ii}])
% 利用movefile函數進行修改
end

 

file = dir('*.bmp');
len = length(file);
for i = 1 : len
    oldname = file(i).name;
    newname = strcat('RH_', oldname);
    % '!'的意思是調用系統函數,32是ASCII碼值,表示空格
    eval(['!rename' 32 oldname 32 newname]);
end

     首先用dir函數獲得工作目錄下所有bmp文件信息,返回的file是一個結構體,里面包含了文件名、修改時間等信息,我們用的就是第一個域名字name,接着獲得bmp文件的個數,然后就是一個循環,用strcat函數將“RH_”與原文件名連接起來,然后重點就是這個eval函數的用法,查看eval函數的幫助可以知道,這個函數實際上就是執行將括號里表達式中的matlab代碼(eval(EXPRESSION) evaluates the MATLAB code in the string EXPRESSION),“!”的意思是調用Windows系統函數(Linux下好像是將rename改為system),比如這里的rename函數,實際上eval括號里的意思就是這樣,只不過是調用的系統函數,32是ASCII碼,表示空格,你也可以使用逗號代替

clc;
clear all;
path='C:\\Users\\ranji\\Desktop\\hello\\';
file = dir(strcat(path,'*.txt'));
len = length(file);
for i = 1 : len
    oldname = file(i).name;
    newname = strcat('RH_', num2str(i));
    % '!'的意思是調用系統函數,32是ASCII碼值,表示空格
    %eval(['!rename' 32 oldname 32 newname]);
    eval (['!rename', oldname, newname]);
end  %未成功

 

Matlab如何創建文件夾

new_folder = 'C:/test'; % new_folder 保存要創建的文件夾,是絕對路徑+文件夾名稱

mkdir(new_folder);  % mkdir()函數創建文件夾;這里一定記得 new_folder = 'C:/test'; 中是斜杠‘/’,而不是反斜杠。否則會報錯。

我們再看一個例子: 在top_folder下面創建一個resize文件夾

top_folder = 'C:/test'; % 第一層文件夾名稱

mkdir(top_folder); % 創建第一層文件夾

second_folder = sprintf('%s/%s', top_folder, 'resize'); % 構造第二層文件夾名稱

mkdir(second_folder); % 創建第二層文件夾

% 之后我們可以看到在 C:/test 文件夾下,多了一個 resize 文件夾。關於sprintf()函數的用法看下一章介紹。

% 注意以上代碼一行行可拷貝到命令行執行,后者簡歷.m文件后執行

new_folder='C:/Users/ranji/Desktop/hello';
mkdir(new_folder);
send_folder=strcat(new_folder,'\','world');
mkdir(send_folder);

 

實際測試應用:

%%%%%%%%%%%%%%批量修改文件夾名稱
% close all;clear all;clc;
% path='G:\100萬采樣\敦南CIS第四套\value-5\version-4\direction-0\'; %修改一級文件夾名稱
% fileDIR=dir(path);  %獲取路徑信息    %第0層文件夾direction
% filenum=length(fileDIR);   %該文件夾下的子文件夾個數,從3開始  
% for p=3:filenum
%     filename=fileDIR(p).name;  %第p個子文件夾的文件夾名    
%     path1=strcat(path,filename,'\');
%     fileDIR1=dir(strcat(path1,'*')); %第一層文件夾1-50
%     filenum1=length(fileDIR1); 
%     for q=3:filenum1
%         filename1=fileDIR1(q).name;
%         path2=strcat(path1,filename1,'\');
%     DIR=dir(strcat(path2,'*.bmp')); %獲取該子文件夾中所有bmp格式的圖像
%     len=length(DIR);
%    
%   cd(path2);
%     if len>0
%         for i=0:2:len-1
%             name1=DIR(i+1).name;
%             name2=DIR(i+2).name;
%            movefile(name1,strcat(num2str(i/2),'_down.bmp'));
%            movefile(name2,strcat(num2str(i/2),'_up.bmp'));
%         end
%     end
%     end
% end

% clear all
% clc
% %folder_name=uigetdir;
% folder_name='G:\100萬采樣\敦南CIS第四套\value-5\version-4\direction-0\';
% % 手動打開要修改名稱的文件夾的上一層文件夾
% folder=dir(folder_name);
% oldname=cell(length(folder)-2,1);
% for ii=3:length(folder)
%    oldname{ii-2}=folder(ii).name;
% end
% 
% % 提取出要修改文件夾的名稱
% newname=cell(length(oldname),1);
% for ii=1:length(oldname)
%    a=oldname{ii};
%    %newname{ii}=a(2:end);
%    % 新的文件夾名稱 
%    movefile([folder_name '\' oldname{ii}],[folder_name '\' num2str(ii)])
%    % 利用movefile函數進行修改
% end


%重命名文件夾名稱
clear all
clc
close all;
folder_name='G:\100萬采樣\5元采樣20000張\';
fileDir=dir(folder_name); 
folderNum=length(fileDir); %第一級目錄 direction
for p=3:folderNum
    fileName=fileDir(p).name;
    path1=strcat(folder_name,fileName,'\');
    fileDIR1=dir(strcat(path1,'*'));
    
    for ii=3:length(fileDIR1)
        movefile([path1 '\' fileDIR1(ii).name],[path1 '\' num2str(ii-2)])
    end
end

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM