Reputation: 69
I want to remove the matching branch.
$ demon@bogon solo$ git branch |grep bug_ bug_1255 bug_1279 bug_1280 bug_1286 bug_1311 bug_1315 bug_1317 bug_1329 bug_1335 bug_1356 bug_1361 bug_1372 bug_1375 bug_1402 bug_1406 demon@bogon solo$ git branch |grep bug_ | xargs git branch -D error: branch 'bug_1255' not found. error: branch 'bug_1279' not found. error: branch 'bug_1280' not found. error: branch 'bug_1286' not found. error: branch 'bug_1311' not found. error: branch 'bug_1315' not found. error: branch 'bug_1317' not found. error: branch 'bug_1329' not found. error: branch 'bug_1335' not found. error: branch 'bug_1356' not found. error: branch 'bug_1361' not found. error: branch 'bug_1372' not found. error: branch 'bug_1375' not found. error: branch 'bug_1402' not found. error: branch 'bug_1406' not found. demon@bogon solo$ git branch -D bug_1406 Deleted branch bug_1406 (was 509e606).
demon@bogon solo$ git branch | grep bug_ | od -c
0000000 033 [ 0 1 ; 3 1 m 033 [ K b u g
0000020 _ 033 [ m 033 [ K 1 2 5 5 \n 033 [
0000040 0 1 ; 3 1 m 033 [ K b u g _ 033 [ m
0000060 033 [ K 1 2 7 9 \n 033 [ 0 1 ; 3
0000100 1 m 033 [ K b u g _ 033 [ m 033 [ K 1
0000120 2 8 0 \n 033 [ 0 1 ; 3 1 m 033 [
0000140 K b u g _ 033 [ m 033 [ K 1 2 8 6 \n
0000160 033 [ 0 1 ; 3 1 m 033 [ K b u g
0000200 _ 033 [ m 033 [ K 1 3 1 1 \n 033 [
0000220 0 1 ; 3 1 m 033 [ K b u g _ 033 [ m
0000240 033 [ K 1 3 1 5 \n 033 [ 0 1 ; 3
0000260 1 m 033 [ K b u g _ 033 [ m 033 [ K 1
0000300 3 1 7 \n 033 [ 0 1 ; 3 1 m 033 [
0000320 K b u g _ 033 [ m 033 [ K 1 3 2 9 \n
0000340 033 [ 0 1 ; 3 1 m 033 [ K b u g
0000360 _ 033 [ m 033 [ K 1 3 3 5 \n 033 [
0000400 0 1 ; 3 1 m 033 [ K b u g _ 033 [ m
0000420 033 [ K 1 3 5 6 \n 033 [ 0 1 ; 3
0000440 1 m 033 [ K b u g _ 033 [ m 033 [ K 1
0000460 3 6 1 \n 033 [ 0 1 ; 3 1 m 033 [
0000500 K b u g _ 033 [ m 033 [ K 1 3 7 2 \n
0000520 033 [ 0 1 ; 3 1 m 033 [ K b u g
0000540 _ 033 [ m 033 [ K 1 3 7 5 \n 033 [
0000560 0 1 ; 3 1 m 033 [ K b u g _ 033 [ m
0000600 033 [ K 1 4 0 2 \n
0000610
demon@bogon solo$ git branch |grep bug_ | xargs echo git branch -D
git branch -D bug_1255 bug_1279 bug_1280 bug_1286 bug_1311 bug_1315 bug_1317 bug_1329 bug_1335 bug_1356 bug_1361 bug_1372 bug_1375 bug_1402
demon@bogon solo$ git branch |grep bug_ | xargs -n 1 git branch -D
error: branch 'bug_1255' not found.
error: branch 'bug_1279' not found.
error: branch 'bug_1280' not found.
error: branch 'bug_1286' not found.
error: branch 'bug_1311' not found.
error: branch 'bug_1315' not found.
error: branch 'bug_1317' not found.
error: branch 'bug_1329' not found.
error: branch 'bug_1335' not found.
error: branch 'bug_1356' not found.
error: branch 'bug_1361' not found.
error: branch 'bug_1372' not found.
error: branch 'bug_1375' not found.
error: branch 'bug_1402' not found.
Upvotes: 2
Views: 548
Reputation: 787
You can print only the matching part of the lines using -o
option of grep
.
$ git branch | grep -Eo "bug_[0-9]+" | xargs git branch -D
grep -Eo "bug_[0-9]+"
prints branch names without colourization characters.
I found easier solution. Try --no-color
option.
$ git branch --no-color | grep _bug | xargs git branch -D
Upvotes: 0
Reputation: 754710
I asked if you have colourization turned on forcibly, and the answer appears to be yes.
To fix, find your ~/.gitconfig
and change the colour stanza to more like:
[color]
ui = auto
That does not force coloured output; if the output goes to a pipe, the colouring is dropped.
Upvotes: 8
Reputation: 600
Your issue isn't with OSX or xargs
mycroft:msg sja$ git branch bug
mycroft:msg sja$ git branch
bug
* master
mycroft:msg sja$ git branch | grep bug | xargs git branch -D
Deleted branch bug (was 32c55a4).
mycroft:msg sja$ git branch
* master
mycroft:msg sja
mycroft:msg sja$ git branch bug_xxx
mycroft:msg sja$ git branch | grep bug_xxx | xargs git branch -D
Deleted branch bug_xxx (was 32c55a4).
mycroft:msg sja$ git branch
* master
mycroft:msg sja$
Upvotes: 0