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美元”;完成