Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Rsync制作平面拷贝_Linux_File_Copy_Rsync_Flat - Fatal编程技术网

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或更高版本。