将单个文件从主目录递归复制到所有目录中

将单个文件从主目录递归复制到所有目录中

我在使用 CentOS 的专用服务器上,并且在此服务器上的一个主目录中有 5000 多个目录。

在主目录中我有一个index.php。我想将其复制index.php到所有 5000 多个目录中,但我知道的唯一方法是手动执行。

有没有办法通过命令行输入类似的内容cp并使其从目录中工作?我会将它一直复制到我开始所在的主目录内的所有目录和子目录中。

答案1

find . -mindepth 1 -type d -exec echo cp index.php {} \;

上述命令将把index.php文件从当前目录复制到所有子目录,递归 - 但不是立即复制。

当您确保它打印了所有正确的复制命令后,请删除echo并执行它。echo这只是一种保护措施,在实际执行您可能不想要的操作之前向您展示整个命令会做什么。

另一个有趣的方法 – 感谢@RedGrittyBrick – 是符号链接文件,而不是简单地复制它们。这样,index.php子目录中的文件就只是根目录中文件的快捷方式,而不是重复。为此,在上述命令中,更改cpln -s。这样,当您更改“主”index.php文件时,子目录中的所有其他文件仍将指向它,因此在查看时也会自动更改。


为了完整性,整个命令分解如下:

  • find .,在当前目录中搜索
  • -mindepth 1,至少深入一个目录
  • -type d,仅查找目录
  • -exec …,执行命令echo cp index.php {},其中{}替换为找到的每个目录。此命令被调用多次,每个子目录调用一次。

相关内容