我如何递归地通过位于不同目录的模式(或glob)添加文件?

例如,我想用一个命令添加A/B/C/foo.java和D/E/F/bar.java(以及其他几个java文件):

git add '*.java'

不幸的是,这并没有像预期的那样起作用。


当前回答

由于这里没有提到,还可以考虑“魔术签名”:/来递归地添加项目根目录下的任何匹配项:

git add :/*.{java,pom}

Tx到:https://stackoverflow.com/a/64210713/2586761

其他回答

由于这里没有提到,还可以考虑“魔术签名”:/来递归地添加项目根目录下的任何匹配项:

git add :/*.{java,pom}

Tx到:https://stackoverflow.com/a/64210713/2586761

只需使用git添加*\*.java即可。这将添加根目录和所有子目录下的所有。java文件。

有点偏离主题(不是特别与git相关),但如果你在linux/unix上,一个变通方法可以是:

find . -name '*.java' | xargs git add

如果你期望路径有空格

find . -name '*.java' -print0 | xargs -0 git add

但我知道这不是你想要的。

用zsh你可以运行:

git add "**/*.java"

所有的*.java文件将被递归添加。

添加一个之前没有提到的Windows命令行解决方案:

for /f "delims=" %G in ('dir /b/s *.java') do @git add %G