文章整理自:http://blog.csdn.net/happyzqj/article/details/1584146http://www.sudu.cn/info/html/edu/linux/20080102/290238.html
xargs主要功能是build and execute command lines from standard input,當命令列過長時,報Too many arguments錯誤時,可以使用xargs,其主要作用是從stdout中每次取一部分,然後傳遞給命令列執行,直至取完為止.文法:xargs [-0prtx] [--interactive] [--null] [-d|--delimiter=delim] [-E eof-str] [-e[eof-str]] [--eof[=eof-str]] [-L max-lines] [-l[max-lines]] [--max-lines[=max-lines]] [-I replace-str] [-i[replace-str]] [--replace[=replace-str]] [-n max-args] [--max-args=max-args] [-s max-chars] [--max-chars=max-chars] [-P max-procs] [--max-procs=max-procs] [--show-limits] [--verbose] [--exit] [--no-run-if-empty] [--arg-file=file] [--version] [--help] [command [initial-arguments]]選項:-e[EOFString]/ -E EOFString將 EOFString 參數用作邏輯 EOF 字串。如果不指定 -e 或 -E 標誌,則採用底線_為邏輯 EOF 字串。xargs 命令讀取標準輸入直到達到
EOF 或指定的字串。-i[ReplaceString]/ -I ReplaceStrin 該選項用於設定在Command 參數中用什麼字元表示標準輸入的當前行。ReplaceStrings 不能在超過 5 個自變數中使用。在每個標準輸入行開始的Null 字元被忽略。每個 Argument能包含一個或多個 ReplaceStrings,但不能大於 255 位元組。如果沒有指定 ReplaceString 參數,使用字串 "{}"。註:-I(大寫 i)和 -i
標誌是互斥的;最後指定的標誌生效。樣本1:ls | xargs -t -i mv {} {}.bak樣本2:ls | xargs -t -I [] echo {}.er-l[Number]/ -L Number用於指定。從標準輸入的哪一個非空行開始讀取字串到數Command 命令。預設值為1.-n Number 用於指定xargs每次最多傳遞標準輸入的多少行內容到Command命令。預設值為1.-p詢問是否運行 Command 參數。它顯示構造的命令列,後跟一個 ?...(問號和省略符號)提示。輸入肯定的、特定於語言環境的響應以運行 Command 參數。任何其它響應都會引起 xargs 命令跳過那個特定的參數調用。每個調用都將詢問您。 [-P max-procs] [--max-procs=max-procs] [--show-limits]這個什麼意思呢?難道表示最大的進程數?-t啟用跟蹤方式,這樣就可以看到實際構造的Command命令及參數執行個體1find . -name "*.java" | xargs grep 'AsyncTask'執行個體2find -name ‘.svn’ |xargs rm -rf執行個體3ls | xargs -n 20 rm -frls當然是輸出所有的檔案名稱(用空格分割)xargs就是將ls的輸出,每20個為一組(以空格為分隔字元),作為rm -rf的參數也就是說將所有檔案名稱20個為一組,由rm -rf刪除,這樣就不會超過命令列的長度了當然我可以直接使用rm -rf *實現這個功能