批量复制文件-matlab实现
来源:互联网 发布:人像摄影师 知乎 编辑:程序博客网 时间:2024/05/16 15:13
我们的需求是:从文件系统中复制一堆文件到另一个地方,这堆文件的文件名写在.csv文件里面。虽然各种操作系统(Linux,Mac)都提供了一堆的批量复制文件的指令。但是对我们的需求,还是无能为力。因此,我们就简单地用matlab来实现一下。
函数定义
这个函数有四个参数:
function flag = csvcp(src_file_dir,dst_file_dir,csv_filename,jump_first_line)
src_file_dir 待移动文件夹的路径dst_file_dir 目标文件夹路径csv_filename csv文件的完整路径jump_first_line boolean型,默认为true,表示是否跳过CSV文件第一行的内容,默认跳过。
参数处理
作为一头有着强烈处女座情节的牛,参数处理肯定得写好。直接上代码吧。
if nargin<2||nargin>4 disp('Argument Count incorrect! '); flag=false; return; end if nargin==2 disp('Using default csv file name filelist.csv '); disp('Jumping first line in the csv file'); csv_filename='filelist.csv'; jump_first_line=true; end if exist(dst_file_dir,'dir')~=7 disp(['Destinate file folder ',dst_file_dir,' not exist,CREATING']); mkdir(dst_file_dir); end if exist(csv_filename,'file')==0 csv_filename=[src_file_dir,'/../',csv_filename]; if exist(csv_filename,'file')==0 disp('Csv file not exist'); flag=false; return; else disp('Using csv file near the source image folder!'); end end
读取csv文件
fid=fopen(csv_filename,'r'); [filelist]=textscan(fid,'%s%*[^\n]'); filelist=filelist{1,1}; if jump_first_line==true startindex=2; else startindex=1; end
批量移动文件
if numel(filelist)>0 for i=startindex:numel(filelist) copyfile([src_file_dir,'/',filelist{i}],[dst_file_dir,'/',filelist{i}]); disp(['copying file: ',filelist{i}]); end flag=true; else disp('csv file content error! '); flag=false; return; end disp('Done!');
完整代码
最近学着使用github托管代码。以上的代码托管在:
https://github.com/ColdZoo/csvcp
你都看到这里了,给个星星吧~
测试与使用
使用起来很简单,需要准备的东东是。
- csv文件,保存你要复制的文件名称。
- csvcp的代码,从github上clone下来最新版的即可
你要复制的文件夹。
复制的命令是(matlab下):
csvcp(‘src_dir’,’dst_dir’,’filelist.csv’,true);
其中第三第四个参数可以省略。目标文件夹不存在的话会自动生成。当然源文件夹是必须得存在的(否则你复制什么)。
关于csv文件的生成
csv文件是一个你需要复制文件的列表。
应该类似于下面这种形式:
Copy File List1.jpg2.jpg3.mkv4.jpg
这种CSV文件只有一列,第一行是列名,应该被省略(第四个参数)。
在Mac和Linux下可以简单地用SHELL脚本自动生成。
例如,你要复制的文件都在文件夹img里面。
那么做完下列这些命令,filelist.csv文件会自动生成
White-Knight:Desktop zhengcai$ cd imgWhite-Knight:img zhengcai$ lsSinaWeibo.png map-bg.jpg qq@2x.pngTencentWeibo.png mockedup-news.png ribbon-apple.pngexamples mooning.png trash.pngfacebook.png neg.png twitter.pngfilelist.csv neutral.png wechat.pngglyphicons-halflings-white.png path.png white_wall_hash.pngglyphicons-halflings.png pos.pnginstagram.png qq.pngWhite-Knight:img zhengcai$ ls >> ../filelist.csv
0 0
- 批量复制文件-matlab实现
- 编写bat文件,实现批量复制文件及文件夹
- 批量文件复制
- 批量复制文件
- NodeJs批量复制文件
- 批量复制指定文件
- Matlab批量处理文件
- matlab批量读取文件
- MATLAB 复制文件
- 根据文档批量复制文件
- 批量复制文件并改名
- matlab批量文件的重命名
- 用MATLAB批量文件重名
- Matlab 批量导入txt文件
- MATLAB批量读取文件代码
- 用matlab批量重命名文件
- MATLAB 批量给文件重命名
- MATLAB批量导入.dat文件
- 黑马程序员——Java面向对象知识点(三)
- SQL提高查询效率【in、not in、between、like】等条件讲述
- C语言编译链接加载过程
- 12716 - GCD XOR
- 记最近几天的面试总结
- 批量复制文件-matlab实现
- 浅谈.Net反射
- 如果不测试,作为程序员的你绝对不知道自己有多么粗心
- Simple guide to forks in GitHub and Git
- TCP连接建立过程中为什么需要“三次握手”
- 关于git的一些错误解决方法。
- [NFC]NDEF和RTD协议介绍
- netty环境配置
- HDU3938Portal(并查集离线应用)求路的条数