`

[shell]xargs

阅读更多
Linux xargs 命令
Linux 命令大全 Linux 命令大全

xargs(英文全拼: eXtended ARGuments)是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。

xargs 可以将管道或标准输入(stdin)数据转换成命令行参数,也能够从文件的输出中读取数据。

xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。

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

xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令。

之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了 xargs 命令,例如:

find /sbin -perm +700 |ls -l       #这个命令是错误的
find /sbin -perm +700 |xargs ls -l   #这样才是正确的
xargs 一般是和管道一起使用。

命令格式:

somecommand |xargs -item  command
参数:

-a file 从文件中读入作为 stdin
-e flag ,注意有的时候可能会是-E,flag必须是一个以空格分隔的标志,当xargs分析到含有flag这个标志的时候就停止。
-p 当每次执行一个argument的时候询问一次用户。
-n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的。
-t 表示先打印命令,然后再执行。
-i 或者是-I,这得看linux支持了,将xargs的每项名称,一般是一行一行赋值给 {},可以用 {} 代替。
-r no-run-if-empty 当xargs的输入为空的时候则停止xargs,不用再去执行了。
-s num 命令行的最大字符数,指的是 xargs 后面那个命令的最大命令行字符数。
-L num 从标准输入一次读取 num 行送给 command 命令。
-l 同 -L。
-d delim 分隔符,默认的xargs分隔符是回车,argument的分隔符是空格,这里修改的是xargs的分隔符。
-x exit的意思,主要是配合-s使用。。
-P 修改最大的进程数,默认是1,为0时候为as many as it can ,这个例子我没有想到,应该平时都用不到的吧。
实例
xargs 用作替换工具,读取输入数据重新格式化后输出。

定义一个测试文件,内有多行文本数据:

# 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
多行输入单行输出:

# 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 选项多行输出:

# cat test.txt | xargs -n3

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 选项可以自定义一个定界符:

# echo "nameXnameXnameXname" | xargs -dX

name name name name
结合 -n 选项使用:

# echo "nameXnameXnameXname" | xargs -dX -n2

name name
name name
读取 stdin,将格式化后的参数传递给命令

假设一个命令为 sk.sh 和一个保存参数的文件 arg.txt:

#!/bin/bash
#sk.sh命令内容,打印出所有参数。

echo $*
arg.txt文件内容:

# cat arg.txt

aaa
bbb
ccc
xargs 的一个选项 -I,使用 -I 指定一个替换字符串 {},这个字符串在 xargs 扩展时会被替换掉,当 -I 与 xargs 结合使用,每一个参数命令都会被执行一次:

# cat arg.txt | xargs -I {} ./sk.sh -p {} -l

-p aaa -l
-p bbb -l
-p ccc -l
复制所有图片文件到 /data/images 目录下:

ls *.jpg | xargs -n1 -I {} cp {} /data/images
xargs 结合 find 使用

用 rm 删除太多的文件时候,可能得到一个错误信息:/bin/rm Argument list too long. 用 xargs 去避免这个问题:

find . -type f -name "*.log" -print0 | xargs -0 rm -f
xargs -0 将 \0 作为定界符。

统计一个源代码目录中所有 php 文件的行数:

find . -type f -name "*.php" -print0 | xargs -0 wc -l
查找所有的 jpg 文件,并且压缩它们:

find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz
xargs 其他应用

假如你有一个文件包含了很多你希望下载的 URL,你能够使用 xargs下载所有链接:

# cat url-list.txt | xargs wget -c
https://www.runoob.com/linux/linux-comm-xargs.html
分享到:
评论

相关推荐

    windows dos下xargs使用

    安装完成后,可以在Cygwin的bash shell环境下使用xargs。 以下是一些基本的`xargs`用法示例: 1. **文件名处理**:假设你有一个包含大量文件名的文本文件,比如`filelist.txt`,你可以用`xargs`配合`rm`命令删除...

    shell-find和xargs详述.txt

    ### Shell Find 和 Xargs 详述 #### 一、Find 命令详解 ##### 1. Find 命令格式 Find 是 Linux 和 Unix 系统中用于搜索文件的强大工具之一。它允许用户根据多种条件查找文件。其基本语法如下: ```bash find ...

    UNIX命令及SHELL编程

    02_Shell-使用find和xargs.PDF 03_Shell-后台执行命令.PDF 04_Shell-文件名置换.PDF 05_Shell-shell输入与输出.PDF 06_Shell-命令执行顺序.PDF 07_文本过滤-正则表达式介绍.PDF 08_文本过滤-grep 家族.PDF 09...

    UNIX shell 编程指南

    find 和 exec xargs 保证shell脚本执行唯一性 用一条命令处理分别改变文件和文件夹的权限 unix时间戳与系统时间相互转换 awk的学习 保护自己编写的shell程序 农行全国集中版代发工资shell程序 Shell程序设计的流程...

    linux shell脚本学习xargs命令使用详解

    在Linux Shell脚本中,`xargs`命令是一个非常实用的工具,它允许我们将大量的数据转换为可管理的小块,然后作为参数传递给其他命令,这样可以有效地处理大数量的输入数据,避免因参数列表过长导致的错误。`xargs`...

    Unix Shell by Example.zip

    Shell脚本中还有许多实用工具,比如`find`用于在文件系统中查找文件,`awk`和`sed`用于数据处理和文本格式化,`sort`和`uniq`用于排序和去除重复行,`tr`进行字符转换,以及`xargs`将标准输入转换为命令参数。...

    绝版经典 LINUX与UNIX SHELL编程指南 PDF 高清版 [16.3M]

    第二章 使用FIND和XARGS 第三章 后台执行命令 第四章 文件名置换 第五章 SHELL输入输出 第六章 命令执行顺序 第二部分 文本过滤 第七章 正则表达式介绍 第八章 GERP家族 第九章 AWK介绍 第十章 SED用法介绍...

    Linux Shell编程3/3

    Linux Shell编程经典著作: 第一部分SHELL |_文件安全与权限 |_使用find和xargs |_后台执行命令 |_文件名置换 |_shell输入与输出 |_命令执行顺序 第二部分文本过滤 |_正则表达式介绍 ...

    Shell自学pdf.zip

    第02 章使用find 和xargs.PDF 第03 章后台执行命令.PDF 第04 章文件名置换.PDF 第05 章shell 输入与输出.PDF 第06 章命令执行顺序.PDF 第07 章正则表达式介绍.PDF 第08 章grep 家族.PDF 第09 章AWK 介绍.PDF 第10 章...

    LINUX与UNIX SHELL编程指南

    第二章 使用FIND和XARGS 第三章 后台执行命令 第四章 文件名置换 第五章 SHELL输入输出 第六章 命令执行顺序 第二部分 文本过滤 第七章 正则表达式介绍 第八章 GERP家族 第九章 AWK介绍 第十章 SED用法介绍 第十一...

    linux测试使用shell并发脚本

    这涉及到对Shell语法的掌握,如命令的后台执行、`xargs`和`GNU Parallel`工具的使用,以及如何结合配置文件动态调整脚本行为。理解并掌握这些技能,对于优化Linux系统中的自动化工作流程非常关键。

    LINUX与UNIX Shell

    第一部分介绍了Shell基础知识,其中涵盖了文件安全与权限、使用find和xargs命令、后台执行命令、文件名置换、Shell输入输出以及命令执行顺序等概念。 在文件安全与权限这一章节中,我们学习到了Linux下文件的概念、...

    shell编程 linux

    002使用find和xargs.pdf 003后台执行命令.pdf 004文件名置换.pdf 005shell输入与输出.pdf 006命令执行顺序.pdf 007正则表达式介绍.pdf 008grep 家族.pdf 009AWK 介绍.pdf 010sed 用法介绍.pdf 011合并与...

    shell命令精品教程

    第一部分s h e l l 1、 文件的安全与权限, 2、使用find和xargs 3、后台执行命令 4、文件名置换 5、shell输入与输出 6、命令执行顺序 7、文本过滤 8、grep 家族 9、...

    shell编程指南,shell脚本,本书共分五部分全。grep家族,sed,AWK,正则表达式,tr用法

    第2章 使用find和xargs 14 第3章 后台执行命令 22 第4章 文件名置换 31 第5章 shell输入与输出 34 第6章 命令执行顺序 46 第二部分 文本过滤 第7章 正则表达式介绍 49 第8章 grep家族 56 第9章 AWK介绍 66 第10章 ...

    shell脚本初学者使用

    Shell脚本中包含一系列高级命令和工具,例如xargs、find等,可用于处理文本和数据。 由于文件内容中存在大量的OCR错误和乱码,上述知识点的某些部分可能不完全准确地反映了原文内容。建议参考完整的、经过校对的...

    Linux与UNIX Shell编程指南.rar

    第二章 使用FIND和XARGS 第三章 后台执行命令 第四章 文件名置换 第五章 SHELL输入输出 第六章 命令执行顺序 第二部分 文本过滤 第七章 正则表达式介绍 第八章 GERP家族 第九章 AWK介绍 第十章 SED用法介绍 第十一...

Global site tag (gtag.js) - Google Analytics