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