这是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理.由此这个命令也是后置引用的一个强有力的替换.在一般使用过多参数的命令替换失败的时候,用xargs来替换它一般都能成功.通常情况下,xargs从管道或者stdin中读取数据,但是它也能够从文件的输出中读取数据.
xargs的默认命令是echo.这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代.如:
bash$ ls -l
total 0
-rw-rw-r-- 1 bozo bozo 0 Jan 29 23:58 file1
-rw-rw-r-- 1 bozo bozo 0 Jan 29 23:58 file2
bash$ ls -l | xargs
total 0 -rw-rw-r-- 1 bozo bozo 0 Jan 29 23:58 file1 -rw-rw-r-- 1 bozo bozo 0 Jan 29 23:58 file2
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
./sent-mail-jul-2005: while mentioning that the Linux ext2/ext3 filesystem
. . .
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 ,请高人补充(用法和实例)
xargs的默认命令是echo.这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代.如:
bash$ ls -l
total 0
-rw-rw-r-- 1 bozo bozo 0 Jan 29 23:58 file1
-rw-rw-r-- 1 bozo bozo 0 Jan 29 23:58 file2
bash$ ls -l | xargs
total 0 -rw-rw-r-- 1 bozo bozo 0 Jan 29 23:58 file1 -rw-rw-r-- 1 bozo bozo 0 Jan 29 23:58 file2
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
./sent-mail-jul-2005: while mentioning that the Linux ext2/ext3 filesystem
. . .
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 ,请高人补充(用法和实例)