如何在目录中递归添加具有特定扩展名的文件

时间:2019-11-21 09:29:07

标签: git

假设有以下文件:

  • git/dir/a.java
  • git/dir/b.java
  • git/dir/c.java
  • git/dir/a.swp
  • git/dir/b.swp
  • git/dir/subdir/d.java
  • git/dir/subdir/e.java

我打算仅将所有Java文件添加到 staged 阶段,git add git/dir/*.java无法递归工作,这意味着git add git/dir/subdir中的文件将无法成功添加。 git add git/dir/*将以递归方式将git/dir内的所有文件(包括扩展名为.swp的文件)添加到 staged 阶段。

问题:是否可以使用一个命令以递归方式将所有具有特定扩展名的文件添加到目录中?如果可能的话如何?

2 个答案:

答案 0 :(得分:2)

shopt globstar

如果globstaroff,请运行shopt -s globstar将其打开。然后,

git add git/dir/**/*.java

**匹配0或更多级别的目录。但是它还会添加git/dir/subdir/subsubdir/o.java(如果存在)。

正如@sschuberth评论所说,您可以使用git add "git/dir/**/*.java"

它适用于Ubuntu和git-bash-for-windows。不确定它是否也可以在其他操作系统上使用。

答案 1 :(得分:0)

shell脚本和git的组合怎么样? find git/dir/ -type f -name "*.java" | xargs git add