热门关键字:  ubuntu  分区  Fedora  linux系统进程  函数

当前位置 :| 主页>Linux教程>Linux命令>

xargs用法

来源: 作者: 时间:2008-08-12 Tag: 点击:
大多数 Linux 命令都会产生输出:文件列表、字符串列表等。但如果要使用其他某个命令并将前一个命令的输出作为参数该怎么办?例如,file 命令显示文件类型(可执行文件、ascii 文本等);您可以处理输出,使其仅显示文件名,现在您希望将这些名称传递给 ls -l 命令以查看时间戳记。xargs 命令就是用来完成此项工作的。它允许您对输出执行其他某些命令。记住下面这个来自于第 1 部分中的语法:

file -Lz * | grep ASCII | cut -d":" -f1 | xargs ls -ltr

让我们来剖析这个命令字符串。第一个,file -Lz *,用于查找是符号链接或者经过压缩的文件。它将输出传递给下一个命令 grep ASCII,该命令在其中搜索 "ASCII" 字符串并产生如下所示的输出:
alert_DBA102.log: ASCII English text
alert_DBA102.log.Z: ASCII text (compress'd data 16 bits)
dba102_asmb_12307.trc.Z: ASCII English text (compress'd data 16 bits)
dba102_asmb_20653.trc.Z: ASCII English text (compress'd data 16 bits)

由于我们只对文件名感兴趣,因此我们应用下一个命令 cut -d":" -f1,仅显示第一个字段:
alert_DBA102.log
alert_DBA102.log.Z
dba102_asmb_12307.trc.Z
dba102_asmb_20653.trc.Z

现在,我们希望使用 ls -l 命令,将上述列表作为参数进行传递,一次传递一个。xargs 命令允许您这样做。最后一部分,xargs ls -ltr,用于接收输出并对其执行 ls -ltr 命令,如下所示:

ls -ltr alert_DBA102.log
ls -ltr alert_DBA102.log.Z
ls -ltr dba102_asmb_12307.trc.Z
ls -ltr dba102_asmb_20653.trc.Z

因此,xargs 本身虽然没有多大用处,但在与其他命令相结合时,它的功能非常强大。

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

$ 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

-i 选项告诉 xargs 用每项的名称替换 {}。-t 选项指示 xargs 先打印命令,然后再执行。

另一个非常有用的操作是当您使用 vi 打开要编辑的文件时:

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

该命令使用 vi 逐个打开文件。当您希望搜索多个文件并打开它们进行编辑时,使用该命令非常方便。


相关文章:
unix与linux中的inode
高级 Linux 命令精通指南
Linux命令集合
Linux补丁工具 diff + patch
section.1 start
tar命令详解
Linux - chattr & lsattr
ln 命令的使用
Linux关机命令学习
Linux - chown 中的 -R 参数
linux - umask
linux初级使用命令
sed 命令
cp 命令
Linux必学的60个命令(1)-安装与登陆
Linux必学的60个命令(2)-文件处理
APT-CDROM
[Unix通用命令]与用户相关的命令
[Unixt通用命令]定位命令
dircolors
declare
rmmod
passwd
linux的kill命令与信号控制
怎么样把man手册的内容保存到某个文件里面?
linux 逐级显示文件命令--tree
Linux grep命令的使用
7个极具危险性的Linux命令
tr命令使用方法
apt-move 制作本地源