git mv与正则表达式?

时间:2017-02-15 01:08:51

标签: regex linux git bash for-loop

我想将一些小的app目录移动到一个名为snippet-apps的目录中。我想使用git mv,因为我可以将它们提交为移动而不是删除和创建。

我无法弄清楚如何使用正则表达式,所以我这样做了:

for dir in *; do 
   if [[ $dir != snippet-apps ]]; 
      then git mv  $dir snippet-apps/ ; 
   fi; 
done

现在,我不是CLI和bash的主人,但是这个或使用xargs是一个解决方案并且它有效,但我希望git mv <regex>

有没有办法使用git mv <regex>?还是一个更简单的解决方案?

2 个答案:

答案 0 :(得分:0)

提供的“git rm”仅为Pathname expansion,而非正则表达式。

您可以编写bash脚本,在工作目录下随意移动文件,然后运行“git add --all”来收集所有修改。

答案 1 :(得分:0)

您可以使用扩展的glob(需要shopt -s extglob选项)来执行此操作:

git mv !(snippet-apps)/ snippet-apps/

!(pattern)匹配除pattern之外的所有内容,并且附加的斜杠确保我们只匹配目录。