歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> xargs命令的使用詳解

xargs命令的使用詳解

日期:2017/2/27 15:59:11   编辑:Linux教程
xargs的參數:
-E EOFString指定邏輯EOF字符串以替換缺省的下劃線”_”。 xargs命令讀取標准輸入直到達到EOF或指定的字符串。

如果不指定 -E 標志,則采用下劃線”_”為邏輯EOF字符串。 如果不指定EOFString 參數,邏輯EOF字符串能力被禁用且下劃線被照字面含義使用。xargs命令讀取標准輸入直到達到EOF或指定的字符串。

-I ReplaceString(大寫i)。
插入標准輸入的每一行用command參數的自變量,把它插入出現的每個ReplaceString的Argument中。
ReplaceStrings不能在超過5個自變量中使用。在每個標准輸入行開始的空字符被忽略。每個 Argument 能包含一個或多個 ReplaceStrings,但不能大於 255 字節。 -I 標志同樣打開 -x 標志。

注:-I(大寫 i)和 -i 標志是互相排斥的;最後指定的標志生效。

-L Number用從標准輸入讀取的非空參數行的指定的數量運行command命令。
如果保留少於指定的 Number,Command參數的最後調用可以有少數幾個參數行。
一行以第一個換行字符結束,除非行的最後一個字符是一個空格或制表符。後續的空格表示延續至下一個非空行。
注: -L、-I(小寫的 L)和 -n 標志是互相排斥的;最後指定的標志生效。

-n Number運行command參數,且使用盡可能多的標准輸入自變量,直到 Number 參數指定的最大值。xargs
命令使用很少的自變量,如果:
如果被積累的命令行長度超過了由 -s Size 標志指定的字節。
最後的迭代有少於 Number(但是非零)的自變量保留。
注: -L、-I(小寫的 L)和 -n 標志是互相排斥的;最後指定的標志生效

-p 詢問是否運行command參數。
它顯示構造的命令行,後跟一個 ?…(問號和省略號)提示。輸入肯定的、特定於語言環境的響應以運行command參數。任何其它響應都會引起xargs命令跳過那個特定的參數調用。每個調用都將詢問您。 -p 標志同樣打開 -t 標志。

-s Size設置構造的command行的最大總大小。Size 參數必須是正整數。
如果滿足以下條件,則使用很少的自變量:
自變量的總數超出 -n 標志指定的自變量數。
總行數超出 -L 或 -I(小寫 L)標志指定的行數。
累加至在 Size 參數指定的字節數之前達到 EOF。

-t 啟用跟蹤方式並在運行之前將構造的command行回送到標准錯誤。

-x 如果有任何command行大於 -s Size 標志指定的字節數,停止運行xargs命令。如果指定 -I(大寫 i)或 -l(小寫 L)標志,則打開 -x 標志。如果沒有指定 -i、-I(大寫 i)、-l(小寫 L)、-L 或 -n 標志,則command行的總長度必須在 -s Size 標志指定的限制內。

返回值:
0 所有command參數的調用都返回出口狀態 0。
1-125 不能組裝滿足指定要求的命令行,一個或多個command參數的調用返回一個非零出口狀態,或發生一些其它的錯誤。
126 command已找到但不能被調用。
127 找不到 Command。

如果不能組裝滿足指定要求的命令行,則不能調用這個命令,命令的調用被一個信號終止,或一個命令調用以出口狀態 255 退出。xargs命令將寫一條診斷消息並退出而不處理任何保留的輸入。

例子:
bash-3.00$ ls
1.txt nohup.out
bash-3.00$ ls > printlist
bash-3.00$ cat printlist
1.txt
nohup.out
bash-3.00$ xargs -t qprt <printlist
上面這個例子是將當前目錄下的所有文件輸出到printlist,使用<將當前目錄下的文件輸出到打印隊列中。
-bash-3.00$ find . -type f -mtime -1 | xargs -t ls -ld;
ls -ld ./1.txt ./.bash_history ./nohup.out ./printlist
-rw——- 1 yxg_80 member 4589 2010-07-10 18:18 ./.bash_history
-rw-r–r– 1 yxg_80 member 0 2010-07-10 15:54 ./1.txt
-rw——- 1 yxg_80 member 11925480 2010-07-10 16:18 ./nohup.out
-rw-r–r– 1 yxg_80 member 26 2010-07-10 18:15 ./printlist

-bash-3.00$ find . -type f -links +1| xargs ls -li 查找當前目錄下文件的鏈接數大於1的文件,並顯示他們的節點的長列表信息。
-bash-3.00$ alias mylinks=’find . -type f -links +1 | xargs ls -li’ 查找連接數大於1(建立了硬鏈接)的文件並長列表顯示信息。
-bash-3.00$ alias myrm=’find . -type f +mtime +30 | xargs rm’ 查找30天前修改的普通文件,並刪除它們。
Copyright © Linux教程網 All Rights Reserved