5

在 git 中我们可以*用来指定文件名,比如*.jpg, *.*,但是目录呢?

有什么方法可以指定所有目录吗?

这不起作用:

git rm firstdirectory/*/thirddirectory

*不会产生“所有目录”的效果。

4

2 回答 2

3

您的命令不起作用,因为您正在为 git 指定目录。您的外壳进行了正确的扩展,但最终 git 收到git rm firstdirectory/somedir/thirddirectory了 git 不喜欢的(git rm期望文件)

要使您的命令正常工作,请使用-r标志,然后 git 接受目录:

git rm -r firstdirectory/*/thirddirectory
于 2013-03-05T12:57:50.397 回答
0

您描述的 glob 表达式扩展不是由 git 执行的,而是由 shell 执行的。如果您执行类似的操作,您可以看到这一点echo *。该命令接收一个参数列表,这些参数是文件名 - 而不是带有星号的单个参数。

在您的情况下,find . -ipath这可能是识别您需要的路径的最有用的方法。您可能想添加一个-type d来获取目录。find 有许多用于选择匹配对象的选项。然后,您可以将其输入xargs以使用git. 例如:

find firstdirectory -ipath 'firstdirectory/*/thirddirectory' | xargs git rm
于 2013-03-05T12:49:12.263 回答