如何在Ubuntu中复制顺序文件

时间:2014-11-29 22:05:27

标签: linux image ubuntu directory copy

我编写的软件会根据图像制作视频。但是,在制作视频之前,它必须从其他图像创建图像。其中许多图像匹配。因此,为了节省处理能力并加快最终视频的创建,我想制作所有匹配的帧的副本。流程是:

  1. 如果图片是唯一的,请将其保存到磁盘' image-number.png'。
  2. 如果图像不唯一,请将图像编号保存在列表中。
  3. 找到新的唯一图片时,请将最后一个图片编号的图像复制到此唯一图片编号所代表的编号。
  4. 例如,如果我的图像编号为0,我显然会将该图像保存到磁盘。如果唯一图像的下一个图像编号是10,那么在保存图像10之前,我会从图像0复制图像1到9。

    这适用于我的Windows实例。我在Windows中的方式是这样的:

    String cmd = "CMD /C for /l %f in (" + (frameToCopy + 1) + ",1," + (sameImageList.size() + (frameToCopy)) + ") do copy \"" +
                        outputFileName + fileName +"_" + frameToCopy + ".png\" \"" +
                        outputFileName + fileName + "_" + "%f.png\"";
    

    然后我将上面的内容传递给一个调用命令行的进程,并在创建大型视频时加快了我的视频创建速度。我确定在Ubuntu中有类似的命令,然而,当我四处寻找时,我似乎无法通过在这里或其他地方搜索来找到我想要做的事情。请问Linux专家能给我一点帮助吗?

    编辑清晰度 我很抱歉与我的问题混淆了。我用我编写的软件 - 使用Java编程语言制作这些图像。每次我的Java程序看到一个唯一的图像时,它会将该图像保存到磁盘。每次看到相同图像的重复时,它只会将图像编号存储在列表中。然后,下次看到唯一图像时,它会将最后一张图像的副本复制到新唯一图像所代表的数字。我正在使用Process对象来执行此操作。我发布的命令的String表示是我在Windows中所做的,我正在寻找一个在基于Unix的系统中执行完全相同操作的命令。

1 个答案:

答案 0 :(得分:0)

我发现你的问题很不清楚,但认为以下内容可能有所帮助。假设您有第0帧,下一个唯一帧是第8帧。据我了解,您需要复制第0帧并保存为第1-7帧。您可以使用

bash中执行此操作
#!/bin/bash
for i in {1..7}
do
    cp frame_0.png frame_$i.png
done

或者,如果文件完全相同,则不需要多次存储它们,您只需创建符号链接,这些链接只指向磁盘上的相同数据块,如下所示:

for i in {1..7}
do
    ln -s frame_0.png frame_$i.png
done