Git+Bash / GitBash:添加与特定模式的首字母大写或全小写文件名以及相应复数匹配的文件

问题描述 投票:0回答:1

我有一些与文件名模式匹配的 Laravel/Livewire 文件,如下所示:

app/Livewire/String1Table.php
app/Livewire/String1s.php
app/Livewire/EditString1.php

app/Models/String2Table.php
app/Models/SubDir/SomeString2.php

resources/views/livewire/string1-table.blade.php
resources/views/livewire/string1s.blade.php
resources/views/livewire/edit-string1.blade.php

现在我只想

git add
只包含
String1
string1
的文件(显然忽略大小写)以及 [L|l]ivewire 文件夹中的文件(也忽略这里的大小写)。

我知道

git add
支持星号和一些正则表达式,但是它支持所有与bash相关的模式匹配吗?关于如何实现我想要的任何想法?希望要求明确。

从前 2 条内容丰富的评论中,我想知道这是否正确:

git add *[Ll]ivewire/*String1[?s]
?我对正则表达式不太熟悉,这就是为什么我想知道是否有人能想出一种方法或部分方法。我不想最终错误地添加文件。

regex bash git git-bash git-add
1个回答
0
投票

您可以使用

find
来定位所需的文件:

$ find . -path '*[Ll]ivewire*' -name '*[Ss]tring1*'
./app/Livewire/String1s.php
./app/Livewire/EditString1.php
./app/Livewire/String1Table.php
./resources/views/livewire/string1-table.blade.php
./resources/views/livewire/edit-string1.blade.php
./resources/views/livewire/string1s.blade.php

一旦您拥有与所需文件匹配的

find
命令,您就可以通过传递
git add
选项对每个文件运行
-exec

$ find . -path '*[Ll]ivewire*' -name '*[Ss]tring1*' -exec git add '{}' +
$ git status -s
A  app/Livewire/EditString1.php
A  app/Livewire/String1Table.php
A  app/Livewire/String1s.php
A  resources/views/livewire/edit-string1.blade.php
A  resources/views/livewire/string1-table.blade.php
A  resources/views/livewire/string1s.blade.php
?? app/Models/
© www.soinside.com 2019 - 2024. All rights reserved.