0

关于重命名目录中的图像文件列表,然后将其他一些图像文件放入该目录中,我想寻求您的帮助。例如,我有目录 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 中的其余图像将相应地重命名。对于 Dir3 的 Image-002 等也会发生同样的情况。

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

4

1 回答 1

4

你应该使用movefileandcopyfile来完成这项工作。

例如,在 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

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

您可能还想查看fullfile字符串格式

于 2013-03-05T06:31:23.410 回答