外壳脚本有趣!如何从给定路径对每个子目录执行动作?
题
我正在编写一个shell脚本(我很烂),我需要一些帮助。它的脚本正在将事物从git转移到简历(并不重要)。问题是,IA文件路径:
controllers/listbuilder/setup/SubmissionRolesListbuilderHandler.inc.php
我需要能够做:
cvs add controllers;
cvs add controllers/listbuilder;
cvs add controllers/listbuilder/setup;
cvs add controllers/listbuilder/setup/SubmissionRolesListbuilderHandler.inc.php
有人可以帮我吗?到目前为止,我想出的最好的方法是递归在工作树中添加所有文件,但这似乎过于效率过低。
编辑: 我被要求澄清。这里是:我希望能够添加文件,给定的文件路径列表,并以某种方式在必要时处理新文件夹。
解决方案
添加所有目录:
find . -type d -exec cvs add {} \;
添加所有文件:
find . -type f -exec cvs add {} \;
我不确定您真正想实现的目标。
其他提示
这有点有些kluge-ish,如果您给它一个肮脏的外观,毫无疑问会失败,但是:
mkdir a/b/c/d
remain="a/b/c/d/"
while echo "$remain" | grep -q / ; do
dir="$(echo "$remain" | cut -d/ -f1)"
remain="$(echo "$remain" | cut -d/ -f2-)"
echo "Do something with dir $dir"
done
这个脚本更像是一个想法,而不是一个完整的解决方案。例如,如果您需要完整的相对路径(不仅是DIR名称),则可以使用斜线数量 cut -d/ -f1-$i
.
不隶属于 StackOverflow