2013-03-04 102 views
0

我想问你的重新命名目录中的图像文件列表,然后把一些其他图像文件在该目录中的帮助。例如,我有目录,方向1,其中我有图像的列表,如下所示:重命名一个文件序列Matlab

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]; 

我分在两个子目录,方向2和DIR3图像列表。 Dir3包含Dir1的每个第三张图像;而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]; 

,对方向2和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]; 

谁能告诉我我怎么能合并方向2和DIR3的文件并返回到Dir1的文件名模式;也就是说,我必须将Dir3的Image-001.jpg重命名为Image-003.jpg,并将其放在Image-003.jpg所在的Dir2的第三个位置;和Image-003.jpg以及Dir2中的其他图像将相应地重命名。对于Dir3等Image-002也是如此。

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

+1

您应该从命令行与shell执行此操作。这是mac,unix还是windows? – 2013-03-04 23:40:59

+0

我同意@luser droog:如果只是这14个文件,请手动执行。如果你有更多的数字,我会建议修改程序以保留原始文件名并再次运行所有内容。 – 2013-03-05 03:31:23

+0

@luser droog:我正在使用Mac。 @ Dedek Mraz:我有超过300个文件。 – Tariq 2013-03-05 07:30:27

回答

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

+1

+1受过教育! – 2013-03-05 08:03:33