重命名文件序列Matlab

时间:2013-03-04 23:12:15

标签: c matlab

我想请求您帮助重命名目录中的图像文件列表,然后将一些其他图像文件放在该目录中。例如,我有目录Dir1,其中有一个图像列表,如下所示:

Dir1 = [Image-001.jpg, Image-002.jpg, Image-003.jpg,...
        Image-004.jpg, Image-005.jpg, Image-006.jpg,...
        Image-007.jpg, Image-008.jpg, Image-009.jpg,...
        Image-010.jpg, Image-011.jpg, Image-012.jpg];

我将图像列表分为两个子目录,即Dir2和Dir3。 Dir3包含Dir1的每第3个图像;和Dir2包含其余图像。

Dir2 = [Image-001.jpg, Image-002.jpg, Image-004.jpg,...
        Image-005.jpg, Image-007.jpg, Image-008.jpg,...
        Image-010.jpg, Image-011.jpg];

Dir3 = [Image-003.jpg, Image-006.jpg, Image-009.jpg, Image-012.jpg];

现在,在对Dir2和Dir3的图像进行一些处理之后,Dir2和Dir3的文件名变为:

Dir2 = [Image-001.jpg, Image-002.jpg, Image-003.jpg,...
        Image-004.jpg, Image-005.jpg, Image-006.jpg,...
        Image-007.jpg, Image-008.jpg];

Dir3 = [Image-001.jpg, Image-002.jpg, Image-003.jpg,...
        Image-004.jpg];

任何人都可以告诉我如何合并Dir2和Dir3的文件并返回到Dir1的文件名模式;也就是说,我必须将Dir3的Image-001.jpg重命名为Image-003.jpg并将其放在Image-003.jpg所在的Dir2的第3个位置;和Image-003.jpg以及Dir2中的其他图像将相应地重命名。 Image-002也适用于Dir3等等。

请问我是否无法清楚地解释问题。任何帮助将非常感激。 Matlab或C ++中的任何示例代码都将是一个很好的帮助。

1 个答案:

答案 0 :(得分:4)

您应该使用movefilecopyfile来完成这项工作。

例如,在Dir3上你可以做到

for ii=1:4,
    dir3filename = fullfile( 'Dir3', sprintf('Image-%03d.jpg', ii ) );
    dir1filename = fullfile( 'Dir1', sprintf('Image-%03d.jpg', 3*ii) ); % new name
    copyfile( dir3filename, dir1filename );
end

请注意dir3filenamedir1filename是相对路径,只有当相对路径相对于当前工作目录正确时,代码才有效。您可以更改代码以使用绝对路径。

您可能还想查看fullfilestring formatting