将文件复制到所有子文件夹和子子文件夹中。
我有一个文件,a.txt
我想将其复制到所有子文件夹以及这些文件夹内的所有文件夹。我尝试创建一个脚本来运行它,但一直出现错误。
有什么帮助吗?
我尝试的代码如下。但这只会将其复制到子目录中,而不是子子目录中
for i in ./* # iterate over all files in current dir
do
if [ -d "$i" ] # if it's a directory
then
cp a.txt "$i" # copy a.txt into it
fi
done
cd ..
done
答案1
您的脚本仅复制到子目录中,因为这就是您告诉它要做的全部事情(./*
是当前目录中的所有文件,并且您永远不会再深入)。您可以递归地实现它,但做类似的事情可能更容易:
find . -mindepth 1 -type d -exec cp a.txt {} \;
find . ! -path . -type d -exec cp a.txt {} \;
这将完成你想要的:复制文本文件到当前树中的每个(子)目录。
-maxdepth
如果需要,您可以使用该选项来限制子目录的深度。您可以使用该-mindepth
选项(如果可用)来设置最小深度限制。在上面的第一个例子中,我们使用-mindepth 1
skip.
来避免输出有关将文件复制到其自身的警告——这不是绝对必要的,但没有警告会更好。
有关更多信息,find
请查看其手册页。