在 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