如何在MATLAB中使用UNIX命令将生成的文件夹插入full_data.tar?
在MATLAB中用UNIX命令打包文件夹到指定tar包
嗨,这个需求其实很容易实现,MATLAB的system函数可以直接调用UNIX系统命令,结合tar工具就能完成。我分两种场景给你详细说明:
场景1:创建新的full_data.tar并添加目标文件夹
如果指定路径下还没有full_data.tar文件,直接用创建模式打包即可:
% 替换成你的实际指定路径(比如'/home/user/results/') target_tar_path = '/path/to/your/target/dir/'; % 要打包的文件夹列表,可根据实际情况增减 folders_to_pack = {'data_1', 'data_2', 'data_3'}; % 把文件夹列表拼接成UNIX命令能识别的字符串 folder_list_str = strjoin(folders_to_pack, ' '); % 构造tar命令:-c表示创建新包,-f指定包文件名 tar_command = sprintf('tar -cf %sfull_data.tar %s', target_tar_path, folder_list_str); % 调用UNIX命令并获取执行状态 [execution_status, command_output] = system(tar_command); % 检查执行结果 if execution_status == 0 disp('文件夹已成功打包到full_data.tar!'); else fprintf('打包失败,错误信息:\n%s\n', command_output); end
场景2:往已存在的full_data.tar里追加文件夹
如果full_data.tar已经存在,需要用追加模式把新文件夹加进去,只需要把tar命令的参数换成-r即可:
target_tar_path = '/path/to/your/target/dir/'; folders_to_pack = {'data_1', 'data_2', 'data_3'}; folder_list_str = strjoin(folders_to_pack, ' '); % 用-r参数追加内容到已有tar包 tar_command = sprintf('tar -rf %sfull_data.tar %s', target_tar_path, folder_list_str); [execution_status, command_output] = system(tar_command); if execution_status == 0 disp('文件夹已成功追加到full_data.tar!'); else fprintf('追加失败,错误信息:\n%s\n', command_output); end
几个注意事项
- 如果你的文件夹不在MATLAB当前工作目录下,记得在
folders_to_pack里写完整路径,比如{'/home/user/data/data_1', '/home/user/data/data_2'}。 - 如果指定路径或文件夹名包含空格,一定要用双引号把路径括起来,比如:
tar_command = sprintf('tar -cf "%sfull_data.tar" %s', target_tar_path, folder_list_str); - 可以用
tar -tf命令验证tar包内容,比如:system(sprintf('tar -tf %sfull_data.tar', target_tar_path));
内容的提问来源于stack exchange,提问作者manoos
相关产品推荐
相关产品推荐

