在git中,我们可以使用*
指定文件名,例如*.jpg
,*.*
,但目录如何?
是否有指定所有目录的方法?
这不起作用:
git rm firstdirectory/*/thirddirectory
*
不执行“所有目录”效果。
答案 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