关于linux:Rsync制作平面副本

Rsync make flat copy

我试图编写一个脚本,将一个目录(带子目录)的所有文件复制到另一个目录的根目录。

假设我有这样的文件结构:

1
2
3
4
5
6
7
8
/
pic.JPG
PIC5.JPG
FOLDER
  pic2.JPG
  pic3.JPG
  FOLDER2
    pic4.JPG

我想要那个目录中的所有.jpg文件,并将它们复制到另一个目的地。但我不想要目录结构,只想要文件。

这就是我得到的:

1
"sudo rsync -aq  --include '*/' --include '*.JPG' --exclude '*\' /source/picturesRoot/ /destination/flatView/

但它也复制目录:(我在StackOverflow上找到了这个链接:rsync:递归同步所有文件,同时忽略目录结构

我看了一下解决方案,除了*和,我的命令没有什么不同。在小路上。我试过了,但没用。

希望有人能帮助我,谢谢。


此答案对您无效,因为您的图片在目录中的级别不同。在rsync中没有跳过目录结构创建的选项。在您提供的链接中,它起作用是因为用户使用*显式选择源文件。

你可以用findrsync试试。find会找到文件,rsync会复制它们。

以下是一个解决方案:

1
find /source/picturesRoot -type f -name"*.JPG" -exec rsync -a {} /destination/flatView/ \;

注意,如果两个文件同名,那么目标目录中只有一个文件。