2017年11月1日 星期三

[linux] xargs 怎麼在多個指令使用相同的參數 xargs with multiple commands as argument

xargs 怎麼在多個指令使用相同的參數 xargs with multiple commands as argument
我們常常使用 xargs , awk 與 grep 來組合複合式的command,但是,要怎麼使用同一個 arguments 再不同的 command中呢 ?
xargs - build and execute command lines from standard input

   -I replace-str
          Replace occurrences of replace-str in the initial-arguments with names read
          from standard input.  Also, unquoted blanks do not terminate  input  items;
          instead the separator is the newline character.  Implies -x and -L 1.
舉一個例子,想要刪除git 不需要的branch 還有刪除遠端的 branch。
先使用grep 與 awk 濾出這些 branch 名稱
$ git branch | grep fix fix/ios_poster_zip fix_langs_admin fix_langs_key fix_poster_counts
使用 xargs -I 來 產生參數 (-I 後面可以使用能使用的字,來當作替代)
$ git branch | grep fix | awk '{print $1}' | xargs -I {} git push origin :{}
刪除本地 branch
$ git branch | grep fix | awk '{print $1}' | xargs -I {} git branch -d {}
如果我們想刪除本地與遠端branch呢?
先看看怎麼在單個 xargs 使用多個command 。
$ git branch | grep fix | awk '{print $1}' | xargs -I {} sh -c 'echo {};echo {}'fix/ios_poster_zipfix/ios_poster_zipfix_langs_adminfix_langs_adminfix_langs_keyfix_langs_keyfix_poster_countsfix_poster_counts
$ git branch | grep fix | awk '{print $1}' | xargs -I {} sh -c 'git push origin :{}; git branch -d {}'
這樣在單一 xargs 中多個指令使用同一個變數
bash - xargs with multiple commands as argument - Stack Overflowhttps://stackoverflow.com/questions/6958689/xargs-with-multiple-commands-as-argument

沒有留言:

張貼留言