当给出来自' git branch'的输出时,xargs不能在Mac上工作。

时间:2014-04-29 03:56:18

标签: macos git xargs

我想删除匹配的分支。

$ 
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.

3 个答案:

答案 0 :(得分:7)

我问你是否强行打开了颜色,答案似乎是肯定的。

要修复,请找到您的~/.gitconfig并将颜色更改为更多:

[color]
        ui = auto

这不会强制彩色输出;如果输出进入管道,则着色被丢弃。

答案 1 :(得分:1)

您的问题不是OSX或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$ 

答案 2 :(得分:0)

您可以使用-o的{​​{1}}选项仅打印行的匹配部分。

grep

$ git branch | grep -Eo "bug_[0-9]+" | xargs git branch -D 打印没有着色字符的分支名称。


我找到了更简单的解决方案。试试grep -Eo "bug_[0-9]+"选项。

--no-color