从包含子文件夹的文件夹中获取所有内容,并使用bash将其复制到另一个目录

时间:2017-04-02 13:34:59

标签: bash

我有一个目录,其中有许多文件夹,它们再次包含子文件夹,然后有一些文件。我可以编写一个bash脚本,将给定目录中的所有文件复制到一个文件夹中吗?因此,我不必浏览任何单个文件夹并将内容复制到另一个文件夹。

2 个答案:

答案 0 :(得分:1)

在您希望复制文件的最顶层目录中:

find . -type f -exec cp {} /some/new/location \;

查找所有普通文件,然后将其复制到/some/new/location

答案 1 :(得分:0)

您可以使用find列出文件夹中的所有文件:

find ./source -type f

然后使用输出作为cp的参数,它看起来像这样:

cp $(find ./source -type f) destination

如果原始目录树中的某些文件名称冲突,则会出现问题。在这种情况下,cp将拒绝复制具有相同名称的其他文件,如下所示:

  

cp:不会覆盖刚创建的destination/t22' with ./ source / test / t2 / t22'

要复制具有相同名称的文件,您可以使用备份选项,如下所示:

cp --backup=numbered $(find ./source -type f) destination

如果你想看看发生了什么,请使用-v(详细)选项

cp -v --backup=numbered $(find ./source -type f) destination