歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux命令之 玩轉xargs

Linux命令之 玩轉xargs

日期:2017/2/28 14:50:55   编辑:Linux教程

我們可以用管道將一個命令的標准輸出重定向到另一個命令的標准輸出,但是有些命令只能以命令行參數的形式接收數據,而無法接受通過stdin的數據,這個時候我們就要用到xargs。

xargs應該緊跟管道操作符之後。

1.將多行轉換為單行,將單行轉換為多行。

[root@localhost 桌面]# cat show.txt

wang

Hunan Chenzhou

123456

li

Guangzhou Zhuhai

654321

[root@localhost 桌面]# cat show.txt | xargs

wang Hunan Chenzhou 123456 li Guangzhou Zhuhai 654321

[root@localhost 桌面]# cat show.txt | xargs -n 4

wang Hunan Chenzhou 123456

li Guangzhou Zhuhai 654321

2.定界符,使用-d 選項

[root@localhost 桌面]# cat show.txt | xargs -d "\n"

wang Hunan Chenzhou 123456 li Guangzhou Zhuhai 654321

3.讀取stdin,將格式化參數傳遞給命令(一個或多個)

[root@localhost 桌面]# vi ceshi.sh

#!/bin/bash

echo $*'OK'

[root@localhost 桌面]# chmod +x ceshi.sh

[root@localhost 桌面]# cat show.txt | xargs -n 1 ./ceshi.sh

wangOK

HunanOK

ChenzhouOK

123456OK

liOK

GuangzhouOK

ZhuhaiOK

654321OK

[root@localhost 桌面]# cat show.txt | xargs ./ceshi.sh

wang Hunan Chenzhou 123456 li Guangzhou Zhuhai 654321OK


4.傳遞復雜的命令參數(可變,不可變參數)-I選項替換字符

[root@localhost 桌面]# cat show.txt | xargs -I {} ./ceshi.sh -p {} -1

-p wang -1OK

-p Hunan Chenzhou -1OK

-p 123456 -1OK

-p li -1OK

-p Guangzhou Zhuhai -1OK

-p 654321 -1OK

5.xargs結合其他命令的用法

[root@localhost 桌面]# file * | grep show | cut -d ":" -f1 | xargs wc -l

8 show.txt

[root@localhost 桌面]$ file * | grep show | cut -d ":" -f1 |xargs -t wc -l

wc -l show.txt

8 show.txt

-t選項,先打印命令,然後再執行

[root@localhost 桌面]# file * | grep show | cut -d ":" -f1 | xargs vi 打開vi編輯器

[root@localhost 桌面]# file * | grep show | cut -d ":" -f1 | xargs -t -i mv {} {}.bak

mv show.txt show.txt.bak

修改名字

[root@localhost 桌面]$ find . -name "*.txt" -type f -print0 | xargs -0 tar -zcvf text.tar.gz

查找所有txt文件,並壓縮它們。

其實xargs可以接很多命令,發現它們你會覺得非常有趣。

Copyright © Linux教程網 All Rights Reserved