我正在编写一个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.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top