如何递归复制“仅文件”

如何递归复制“仅文件”

假设我有folder0 及其子文件夹和文件的结构。

   folder0
      subfolder01
        file011
        file012
      subfolder02
        file021
      file01
      file02

我想将主文件夹中的所有文件复制folder0到其他位置,以便所有文件都在一个目录中?我怎样才能做到这一点?我用了

cp --recursive folder0address targetfolderaddress

但子文件夹复制到目标文件夹。我只想要目录和子目录中的所有文件而不是文件夹。我的意思是目标文件夹中如下所示:

targetfolder
  file011
  file012
  file021
  file01
  file02

答案1

使用find

find folder0 -type f -exec cp {} targetfolder \;

使用 GNUcoreutils你可以更有效地做到这一点:

find folder0 -type f -exec cp -t targetfolder {} +

前一个版本cp针对每个复制的文件运行,而后者cp仅运行一次。

答案2

有了 zsh,感谢**用于递归通配符全局限定符.仅匹配常规文件:

cp -p folder0/**/*(.) targetfolder

答案3

或者使用 xargs

 find folder0 -type f | xargs -I {} cp -v {} targetfolder;

使用 -v 显示正在发生的情况。

相关内容