Linux xargs命令
1.功能:
xargs可以将stdin中以空格或换行符进行分隔的数据,形成以空格分隔的参数(arguments),传递给其他命令。因为以空格作为分隔符,所以有一些文件名或者其他意义的名词内含有空格的时候,xargs可能会误判。简单来说,xargs是给其他命令传递参数的一个过滤器,是构建单行命令的重要组件之一。
之所以要用到xargs,是因为由于很多命令不支持使用管道|来传递参数,例如:
find /sbin -perm +700 |ls -l //这个命令是错误,因为标准输入不能作为ls的参数 find /sbin -perm +700 |xargs ls -l //这样才是正确的
2.命令格式
xargs [选项] [command]
3.选项说明:
-0:如果输入的stdin含有特殊字符,例如反引号`、反斜杠\、空格等字符时,xargs可以将它还原成一般字符。为xargs的默认选项。 -e <flag>,-E <flag>,--eof=<eof-str>:eof是end of file string的意思。flag可以是一个字符串或者是由空格分隔的多个字符串,当xargs分析到这个flag时,就会停止工作。见示例2。 -p:当每次执行一个argument的时候询问一次用户。 -n <num>:表示命令在执行的时候一次使用的argument的个数,由num指定,默认是用所有的参数。 -t:表示先打印命令,然后再执行。 -a <file>:从文件中读入作为sdtin。 -i,-I:其中-I某些Linux版本不支持。将xargs的输出每一项参数,单独赋值给后面的命令,参数需要用{}代替。见示例3。 -r:或者--no-run-if-empty,当xargs的输入为空的时候则停止xargs,不用再去执行后面的命令了,-r是xargs的默认选项。 -s <num>:命令行的最大字符数,指的是xargs后面那个命令的最大命令行字符数,包括命令、空格和换行符。每个参数单独传入xargs后面的命令。见示例4。 -L <line_num>:设置标准输入中最大的行数作为命令每一次执行的参数。见示例5。 -d <delim>, --delimiter=<delim>: xargs处理标准输入默认是按换行符和空格作为分隔符,输出arguments的分隔符是空格,这里修改xargs处理标准输入时的分隔符。 -x:eXit的意思,主要是配合-s使用,当命令行字符数大于-s指定的数值时,退出xargs。 -P:修改最大的进程数,默认是1,为0时候为as many as it can。该选项比较少用,目前还不清楚该用法。
4.用法示例
(1)将shell的特殊字符还原为一般字符。
[b3335@MIC ~]$ echo '`0123`4 56789'|xargs -t echo echo `0123`4 56789 `0123`4 56789
如果直接进行如下操作,会报无法找到命令01234的错误,因为反引号在shell中会将01234作为一个命令来执行,但是01234不是一个命令。-t表示先打印命令,然后再执行。
[b3335@MIC ~]$ echo `01234` 56789 -bash: 01234: command not found 56789
(2)设置xargs读入参数时的结束标识,以逗号结束。这里要注意结束标志必须要是单独的字段,即以空格或者换行符分隔的字段。
[b3335@MIC ~]$ echo 01234 , 56789|xargs -E "," 01234
(3)将当前目录的所有文件添加后缀名。
ls | xargs -t -i mv {} {}.bak
(4)设置命令行的最大字符数。参数默认一个一个单独传入命令中执行。
[b3335@MIC test]$ echo "01234 56789"|xargs -t -s 11 echo 01234 01234 echo 56789 56789
(5)设置标准输入中每次多少行作为命令的参数,默认是将标准输入中所有行的归并到一行一次性传给命令执行。
[b3335@MIC test]$ echo -e "01234\n56789\n01234" | xargs -t -L 2 echo echo 01234 56789 01234 56789 echo 01234 01234
(6)将文件内容以空格分隔同行输出。
//列出文件内容 cat test.txt a b c d e f g h i j k l m n o //多行输入单行输出: cat test.txt | xargs a b c d e f g h i j k l m n o
参考文献
[1]Xargs用法详解
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。
更新日志
- 小骆驼-《草原狼2(蓝光CD)》[原抓WAV+CUE]
- 群星《欢迎来到我身边 电影原声专辑》[320K/MP3][105.02MB]
- 群星《欢迎来到我身边 电影原声专辑》[FLAC/分轨][480.9MB]
- 雷婷《梦里蓝天HQⅡ》 2023头版限量编号低速原抓[WAV+CUE][463M]
- 群星《2024好听新歌42》AI调整音效【WAV分轨】
- 王思雨-《思念陪着鸿雁飞》WAV
- 王思雨《喜马拉雅HQ》头版限量编号[WAV+CUE]
- 李健《无时无刻》[WAV+CUE][590M]
- 陈奕迅《酝酿》[WAV分轨][502M]
- 卓依婷《化蝶》2CD[WAV+CUE][1.1G]
- 群星《吉他王(黑胶CD)》[WAV+CUE]
- 齐秦《穿乐(穿越)》[WAV+CUE]
- 发烧珍品《数位CD音响测试-动向效果(九)》【WAV+CUE】
- 邝美云《邝美云精装歌集》[DSF][1.6G]
- 吕方《爱一回伤一回》[WAV+CUE][454M]