Path shell脚本很有趣!如何从给定路径对每个子目录执行操作?

Path shell脚本很有趣!如何从给定路径对每个子目录执行操作?,path,shell,cvs,dirname,Path,Shell,Cvs,Dirname,我正在写一个shell脚本(我很烂),我需要一些帮助。它是一个将东西从git移动到CVS的脚本(不重要)。问题是,我需要一个文件路径: controllers/listbuilder/setup/SubmissionRolesListbuilderHandler.inc.php 我需要能够做到: cvs add controllers; cvs add controllers/listbuilder; cvs add controllers/listbuilder/setup; cvs add

我正在写一个shell脚本(我很烂),我需要一些帮助。它是一个将东西从git移动到CVS的脚本(不重要)。问题是,我需要一个文件路径:

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 {} \;

我不确定你真正想要实现什么。

这有点笨拙,如果你看得很脏,肯定会失败,但是:

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

这个脚本与其说是一个完整的解决方案,不如说是一个想法。例如,如果您需要完整的相对路径(不仅仅是目录名),那么您可以使用
cut-d/-f1-$i

计算斜杠的数量,从git移动到CVS?我想你迷路了;)我没有澄清。我迁移到git,但出于各种原因,我需要保持CVS的一份最新副本。git cvsimport也不是为我做的,不是。你会发现我已经找到了解决方案。我想要的东西将只做cvs添加到与我更改的文件相关的目录。我的工作树很大,这样做效率很低。