Path shell脚本很有趣!如何从给定路径对每个子目录执行操作?
我正在写一个shell脚本(我很烂),我需要一些帮助。它是一个将东西从git移动到CVS的脚本(不重要)。问题是,我需要一个文件路径: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
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添加到与我更改的文件相关的目录。我的工作树很大,这样做效率很低。