在 git 中我们可以*
用来指定文件名,比如*.jpg
, *.*
,但是目录呢?
有什么方法可以指定所有目录吗?
这不起作用:
git rm firstdirectory/*/thirddirectory
*
不会产生“所有目录”的效果。
您的命令不起作用,因为您正在为 git 指定目录。您的外壳进行了正确的扩展,但最终 git 收到git rm firstdirectory/somedir/thirddirectory
了 git 不喜欢的(git rm
期望文件)
要使您的命令正常工作,请使用-r
标志,然后 git 接受目录:
git rm -r firstdirectory/*/thirddirectory
您描述的 glob 表达式扩展不是由 git 执行的,而是由 shell 执行的。如果您执行类似的操作,您可以看到这一点echo *
。该命令接收一个参数列表,这些参数是文件名 - 而不是带有星号的单个参数。
在您的情况下,find . -ipath
这可能是识别您需要的路径的最有用的方法。您可能想添加一个-type d
来获取目录。find 有许多用于选择匹配对象的选项。然后,您可以将其输入xargs
以使用git
. 例如:
find firstdirectory -ipath 'firstdirectory/*/thirddirectory' | xargs git rm