我有一些与文件名模式匹配的 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]
?我对正则表达式不太熟悉,这就是为什么我想知道是否有人能想出一种方法或部分方法。我不想最终错误地添加文件。
您可以使用
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/