我在使用 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
子目录中的文件就只是根目录中文件的快捷方式,而不是重复。为此,在上述命令中,更改cp
为ln -s
。这样,当您更改“主”index.php
文件时,子目录中的所有其他文件仍将指向它,因此在查看时也会自动更改。
为了完整性,整个命令分解如下:
find .
,在当前目录中搜索-mindepth 1
,至少深入一个目录-type d
,仅查找目录-exec …
,执行命令echo cp index.php {}
,其中{}
替换为找到的每个目录。此命令被调用多次,每个子目录调用一次。