linux中xargs的用法详解


本文摘自PHP中文网,作者巴扎黑,侵删。

xargs在linux中是个很有用的命令,它经常和其他命令组合起来使用,非常的灵活.

xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理.由此 这个命令也是后置引用的一个强有力的替换.在一般使用过多参数的命令替换失败的时候,用xargs来替换它一般都能成功.通常情况下,xargs从管道或 者stdin中读取数据,但是它也能够从文件的输出中读取数据.

xargs的默认命令是echo.这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代.如:

bash$ ls -l

total 0

-rwxr-xr-x 2 root root 4096 2009-02-23 090218.txt

-rwxr-xr-x 2 root root 12288 2009-06-08 090607.txt

bash$ ls -l | xargs

090218.txt 090607.txt

bash$ find ~/mail -type f | xargs grep "Linux"

./misc:User-Agent: slrn/0.9.8.1 (Linux)

./sent-mail-jul-2005: hosted by the Linux Documentation Project.

./sent-mail-jul-2005: (Linux Documentation Project Site, rtf version)

./sent-mail-jul-2005: Subject: Criticism of Bozo's Windows/Linux article

. . .

ls | xargs -p -l gzip 使用gzips压缩当前目录下的每个文件,一次压缩一个, 并且在每次压缩前都提示用户.

注意: 一个有趣的xargs选项是-n NN,NN是限制每次传递进来参数的个数.

ls | xargs -n 8 echo以每行8列的形式列出当前目录下的所有文件.

注意: 另一个有用的选项是-0,使用 find -print0 或 grep -lZ 这两种组合方式. 这允许处理包含空白或引号的参数.

find / -type f -print0 | xargs -0 grep -liwZ GUI | xargs -0 rm -f

grep -rliwZ GUI / | xargs -0 rm -f

上边两行都可以用来删除任何包含"GUI"的文件。

-i 表示 find 传递给xargs的结果 由{}来代替

-I 我认为是和i差不多,可以这么认为 -i可以用-I {} 来代替

-p 交互式提问y来确认命令的每次执行。

-t 在执行前回显各个command

还有参数-s 和 -x 具体查手册.

下面是另一个示例,我们希望计算这些文件中的行数:

$ file * | grep ASCII | cut -d":" -f1 | xargs wc -l

47853 alert_DBA102.log

19 dba102_cjq0_14493.trc

29053 dba102_mmnl_14497.trc

154 dba102_reco_14491.trc

43 dba102_rvwr_14518.trc

77122 total

(注:上述任务还可用以下命令完成:)

$ wc -l ‘file * | grep ASCII | cut -d":" -f1 | grep ASCII | cut -d":" -f1‘

该 xargs 版本用于阐释概念。Linux 可以用几种方法来完成同一个任务;请使用最适合您的情况的方法。

使用该方法,您可以快速重命名目录中的文件。

$ ls | xargs -t -i mv {} {}.bak

阅读剩余部分

相关阅读 >>

Linux怎么学

电脑如何安装Linux

如何处理ecs Linux服务器重启服务器、初始化系统后数据盘不见了的情况

Linux怎么开启php

Linux如何解压压缩的文件

如何查看Linux服务

如何在运维过程中对shell内建命令

如何处理ping ecs实例的ip地址间歇性丢包

Linux新建文件命令是什么

目前Linux发行版默认使用的文件系统是什么

更多相关阅读请进入《Linux》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...