linux命令--xargs的使用

xargs 是給命令傳遞參數的一個過濾器,也是組合多個命令的一個工具。工具

xargs 能夠將管道或標準輸入(stdin)數據轉換成命令行參數,也可以從文件的輸出中讀取數據。測試

xargs 也能夠將單行或多行文本輸入轉換爲其餘格式,例如多行變單行,單行變多行。spa

xargs 默認的命令是 echo,這意味着經過管道傳遞給 xargs 的輸入將會包含換行和空白,不過經過 xargs 的處理,換行和空白將被空格取代。命令行

xargs 是一個強有力的命令,它可以捕獲一個命令的輸出,而後傳遞給另一個命令。字符串

之因此能用到這個命令,關鍵是因爲不少命令不支持|管道來傳遞參數,而平常工做中有有這個必要,因此就有了 xargs 命令get

例:it

[root@xiaojin ~]# find /sbin -perm +700|ls   這是錯誤的寫法,只處理管道後面的命令
a.log anaconda-ks.cfg install.log install.log.syslog null xiaojin.txtclass

[root@xiaojin ~]# find /sbin -perm +700|xargs ls      正確的寫法,把管道前面的結果標準輸出給管道後面的命令
/sbin/accton /sbin/insmod.static /sbin/pdata_tools
/sbin/addpart /sbin/install-info /sbin/pidof
/sbin/agetty /sbin/installkernel /sbin/pivot_roottest

命令格式:擴展

somecommand |xargs -item command

測試文件:
cat >>test.txt<<EOF a b c d e f g h i j k l m n o p q r s t u v w x y z
EOF
使用實例

一、多行輸入單行輸出

例:

[root@xiaojin ~]# cat test.txt
a b c d e f g
h i j k l m n
o p q
r s t
u v w x y z
[root@xiaojin ~]# cat test.txt |xargs
a b c d e f g h i j k l m n o p q r s t u v w x y z

二、-n  多行輸出

例:

[root@xiaojin ~]# cat test.txt |xargs -n 5
a b c d e
f g h i j
k l m n o
p q r s t
u v w x y
z

三、-d 定義一個定界符

例:

[root@xiaojin ~]# echo "namaeXnameXname"|xargs -dX
namae name name

[root@xiaojin ~]# echo "namaeXnameXname"|xargs -da
n m eXn meXn me

四、-n 結合 -d使用

例:

[root@xiaojin ~]# echo "namaeXnameXname"|xargs -dX -n1
namae
name
name

五、 -I,使用 -I 指定一個替換字符串 {},這個字符串在 xargs 擴展時會被替換掉,當 -I 與 xargs 結合使用,每個參數命令都會被執行一次:

例:

[root@xiaojin ~]# ls .*jpg|xargs -n1 -i cp {} /data01/images

六、xargs 結合 find 使用

用 rm 刪除太多的文件時候,可能獲得一個錯誤信息:/bin/rm Argument list too long. 用 xargs 去避免這個問題:

find / -type f -name "*.log" |xargs rm -f

相關文章
相關標籤/搜索