Linux xargs 命令 講解

2022-08-25 14:06:23 字數 1311 閱讀 6831

xargs 的作用是將引數列表轉換成小塊分段傳遞給其他命令,以避免引數列表過長的問題。一般和管道配合使用,也可以單獨使用。

之所以能用到這個命令,關鍵是由於很多命令不支援|管道來傳遞引數,而日常工作中有有這個必要,所以就有了 xargs 命令,例如:

```find /sbin -perm +700 |ls -l #這個命令是錯誤的

find /sbin -perm +700 |xargs ls -l #這樣才是正確的

```如果path目錄下檔案過多就會因為「引數列表過長」而報錯無法執行。

```rm `find /path -type f`

```但改用xargs以後,問題即獲解決。

```find /path -type f -print0 | xargs -0 rm

```本例中xargs將find產生的長串檔案列表拆散成多個子串,然後對每個子串呼叫rm。這樣要比如下使用find命令效率高的多。

```find /path -type f -exec rm '{}' \;

```上面這條命令會對每個檔案呼叫"rm"命令。當然使用新版的"find"也可以得到和"xargs"命令同樣的效果:

```find /path -type f -exec rm '{}' +

```xargs的作用一般等同於大多數unix shell中的反引號,但更加靈活易用,並可以正確處理輸入中有空格等特殊字元的情況。對於經常產生大量輸出的命令如find、locate和grep來說非常有用。

常用引數:

-i 或者是-i(大寫的i) 將xargs的每項名稱,一般是一行一行賦值給 {},可以用 {} 代替。

其中-i的正確用法是:

```ls *.log | xargs -i {} mv {} {}.bak

```而-i的用法是

```ls *.log | xargs -i mv {} {}.backup

```區別是:-i可以自己指定替換字元,如上面{}可換成file或其他字元```ls *.log | xargs -i file mv file file.bak```

-d delim 分隔符,預設的xargs分隔符是回車,argument的分隔符是空格,這裡修改的是xargs的分隔符。

-n num 後面加次數,表示命令在執行的時候一次用的argument的個數,預設是用所有的。

-p 當每次執行乙個argument的時候詢問一次使用者。

-a file 從檔案中讀入作為sdtin

Linux xargs 命令 講解

xargs 的作用是將引數列表轉換成小塊分段傳遞給其他命令,以避免引數列表過長的問題。一般和管道配合使用,也可以單獨使用。之所以能用到這個命令,關鍵是由於很多命令不支援 管道來傳遞引數,而日常工作中有有這個必要,所以就有了 xargs 命令,例如 find sbin perm 700 ls l 這個...

Linux xargs命令詳解

xargs用法詳解 1.簡介 之所以能用到這個命令,關鍵是由於很多命令不支援 管道來傳遞引數,而日常工作中有有這個必要,所以就有了xargs命令,例如 find sbin perm 700 ls l 這個命令是錯誤的 find sbin perm 700 xargs ls l 這樣才是正確的 xar...

linux xargs命令學習

xargs命令用來將前乙個程式的標準輸出作為後乙個程式的引數,通常xargs會結合管道以及其它命令一起使用,功能非常強大。以下給出幾種實際的使用案例 1.向指定的程序傳送signal,sh kill 0 2222 sh kill 2222 no such process sh echo 1sh sh...