如何正确地将文件复制到多个文件夹和子文件夹中而不覆盖目标文件夹中的文件内容?

如何正确地将文件复制到多个文件夹和子文件夹中而不覆盖目标文件夹中的文件内容?

我实际上尝试过以下现有的答案: 如何使用命令行将文件复制到多个文件夹? 我使用以下命令:

find folder -exec cp file.txt {} \;

我想使用这个是因为我想将一个名为“file.txt”的文件复制到名为“folder”的目录及其所有子目录中,而不在命令中提及所有目录。

然而,这最终取代了每一个文件夹及其子文件夹中的文件,内容为“file.txt”。例如,如果文件夹内有一个“foo.txt”,它仍将保留名称“foo.txt”,但其所有内容将被“file.txt”替换。这让我很困惑,于是我尝试了以下交互式标志:

find folder -exec cp -i file.txt {} \;

并且我得到了目录“文件夹”及其所有子目录中每个文件的覆盖提示,即使它们的名称都不同。

有人能帮我弄清楚发生了什么事以及适当的命令应该是什么吗?

答案1

你应该限制find仅列出目录

find folder -type d -exec cp file.txt {} \;

此外,将来,当您cp进入目录时,如果目录名来自其他命令,请使用该-t选项确保它实际上是一个目录:

find folder -type d -exec cp -t {} file.txt \;

man cp

-t, --target-directory=DIRECTORY
      copy all SOURCE arguments into DIRECTORY

因此,如果将文件作为参数提供-tcp将自动发出抱怨。

另一个答案对那个问题确实有用-type d

相关内容