Git路径匹配任何目录名称

时间:2013-03-05 12:31:49

标签: git glob

在git中,我们可以使用*指定文件名,例如*.jpg*.*,但目录如何?

是否有指定所有目录的方法?

这不起作用:

git rm firstdirectory/*/thirddirectory

*不执行“所有目录”效果。

2 个答案:

答案 0 :(得分:3)

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

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

git rm -r firstdirectory/*/thirddirectory

答案 1 :(得分:0)

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

在您的情况下,find . -ipath可能是确定所需路径的最有用方法。您可能希望仅添加-type d以获取目录。 find有许多选择匹配对象的选项。然后,您可以将其反馈到xargs以使用git。例如:

find firstdirectory -ipath 'firstdirectory/*/thirddirectory' | xargs git rm