Bash 将一个文件复制到每个子目录中

Bash 将一个文件复制到每个子目录中,bash,shell,scripting,Bash,Shell,Scripting,我试图cp一个文件:index.php进入所有子目录,以及这些子目录的子目录,以此类推,这样根目录的每个子目录都有index.php 我从这个开始: for d in */; do cp index.php "$d"; done; 这只适用于顶级子目录。我试过几次这样把它埋在自己里面: for d in */; do cp index.php "$d"; for e in */; do cp index.php "$e";for f in */; do cp index.php "$f";

我试图
cp
一个文件:
index.php
进入所有子目录,以及这些子目录的子目录,以此类推,这样根目录的每个子目录都有
index.php

我从这个开始:

for d in */; do cp index.php "$d"; done; 
这只适用于顶级子目录。我试过几次这样把它埋在自己里面:

for d in */; do cp index.php "$d"; for e in */; do cp index.php "$e";for f in */; do cp index.php "$f"; done; done; done
但这似乎没什么作用

试试这个:

find . -type d -exec cp index.php {} \;
  • -键入d
    查找所有目录和子目录
    • 的答案很好,也很简单。请注意,这里有一种使用shell函数的方法。如果操作是复杂的或有条件的,您可能需要这样的操作

      t=$PWD/index.php
      
      recurse () {
        for i in */.; do
          if [ "./$i" != './*/.' ]; then
            (cd "./$i" && cp "$t" . && recurse)
          fi
        done
      }
      
      recurse
      

      几乎成功了。对于每一个目录,它都说
      省略目录
      ,我认为
      +
      应该有
      \
      也不起作用,在'index.php./content/rest/of/path'之后给出
      cp:缺少目标文件操作数
      @Chris:index.php和
      {}
      之间的空格很重要;对于**/*/中的d;不要用“d美元”;完成