如何递归复制“仅文件”

Sir*_*leh 9 cp recursive

假设我有文件夹 0 及其子文件夹和文件的这种结构。

   folder0
      subfolder01
        file011
        file012
      subfolder02
        file021
      file01
      file02
Run Code Online (Sandbox Code Playgroud)

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

cp --recursive folder0address targetfolderaddress
Run Code Online (Sandbox Code Playgroud)

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

targetfolder
  file011
  file012
  file021
  file01
  file02
Run Code Online (Sandbox Code Playgroud)

Sat*_*ura 11

使用find

find folder0 -type f -exec cp {} targetfolder \;
Run Code Online (Sandbox Code Playgroud)

使用 GNU,coreutils您可以更有效地做到这一点:

find folder0 -type f -exec cp -t targetfolder {} +
Run Code Online (Sandbox Code Playgroud)

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

  • @codeforester 运行 `cp` 一次与为每个文件运行它。`-t` 是必需的,因为 `find ... -exec cp {} targetfolder +` 是无效语法(`{}` 必须放在最后)。 (2认同)