使用bash比较两个文件夹并根据序列号将丢失的文件复制到新文件夹

时间:2018-02-09 15:09:09

标签: bash shell

我有两个带有顺序编号文件的文件夹。文件夹“Originals”包含所有文件,但文件夹“Modified”中缺少一些文件。有没有办法使用bash将文件夹“Original”中缺少的文件夹从“Originals”文件夹复制到新文件夹? 文件的内容和文件名不同,但文件名的结尾编号相关。

文件仍然是图片 - .png - 来自使用Imagemagick修改过的视频。十个文件夹每个包含15000个图像,由于使用Imagemagick处理时出错,每个“已修改”文件夹中有大约100个不规则丢失。

Originals:
xy_abc_00000.png
xy_abc_00001.png
xy_abc_00002.png
.
.
xy_abc_15000.png


Modified:
zz_def_00000.png
zz_def_00002.png
.
.
zz_def_14999.png

1 个答案:

答案 0 :(得分:0)

list="$(diff <(ls -X Originals | sed "s:^.*[^0-9]\([0-9]*.png\)$:\1:") \
             <(ls -X Modified  | sed "s:^.*[^0-9]\([0-9]*.png\)$:\1:"))"
for file in $(grep "^<" <<<"$list" | cut -d" " -f2); do
    cp Originals/xy_abc_$file Modified/zz_def_$file
done

不过于优雅,会打破带空格的名字,但仍然适合OP帖子中描述的任务。