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