0

我正在编写一个 shell 脚本(我很讨厌),我需要一些帮助。它是一个将事情从 git 转移到 CVS 的脚本(不重要)。问题是,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

有人可以帮我吗?到目前为止,我想出的最好的方法是在我的工作树中递归地添加所有文件,但这似乎效率太低了。

编辑:我被要求澄清。这里有:我希望能够 CVS ADD 文件,给定文件路径列表,并在必要时以某种方式处理新文件夹的添加。

4

2 回答 2

1

添加所有目录:

find . -type d -exec cvs add {} \;

添加所有文件:

find . -type f -exec cvs add {} \;

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

于 2010-04-30T01:08:58.600 回答
0

这有点笨拙,如果你给它一个肮脏的外观,毫无疑问会失败,但是:

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.

于 2010-05-07T01:27:43.803 回答