Linux Rsync制作平面拷贝
我正在尝试编写一个脚本,将一个目录(带有子目录)的所有文件复制到另一个目录的根目录 假设我有这样的文件结构:Linux Rsync制作平面拷贝,linux,file,copy,rsync,flat,Linux,File,Copy,Rsync,Flat,我正在尝试编写一个脚本,将一个目录(带有子目录)的所有文件复制到另一个目录的根目录 假设我有这样的文件结构: / pic.JPG PIC5.JPG FOLDER pic2.JPG pic3.JPG FOLDER2 pic4.JPG 我希望所有的.JPG文件从该目录,并复制到另一个目的地。但我不需要目录结构,只需要文件 这就是我得到的: "sudo rsync -aq --include '*/' --include '*.JPG' --exclude '*\' /sour
/
pic.JPG
PIC5.JPG
FOLDER
pic2.JPG
pic3.JPG
FOLDER2
pic4.JPG
我希望所有的.JPG文件从该目录,并复制到另一个目的地。但我不需要目录结构,只需要文件
这就是我得到的:
"sudo rsync -aq --include '*/' --include '*.JPG' --exclude '*\' /source/picturesRoot/ /destination/flatView/
但它也复制目录:(
我在stackoverflow上找到此链接:
我查看了解决方案,除了路径中的*和。之外,我的命令没有太大区别。我尝试了它,但没有成功
我希望有人能帮助我,谢谢。这个答案不适用于您,因为您的图片在目录中不在同一级别。
rsync
中没有跳过创建目录结构的选项。在您提供的链接中,它起作用是因为用户使用*
显式选择源文件
您可以尝试使用find
和rsync
find
查找文件并rsync
复制它们
以下是一个解决方案:
find /source/picturesRoot -type f -name "*.JPG" -exec rsync -a {} /destination/flatView/ \;
小心,如果两个文件具有相同的名称,则只有一个文件将位于目标目录中。hmmm将进行查看。@user2815780我使用find和rsync添加了一个解决方案。我已经尝试过,它正在工作。非常感谢,我将尝试它。我非常确定不会有两个具有相同名称的文件。为了获得更高效的解决方案(仅1次rsync调用)请参阅注释“更高效”中引用的解决方案需要Bash 4.0或更高版本。