玩转xargs
xargs命令可以把标准输入数据转换成命令行参数。也可以将单行或多行文本输入转换成其他格式,是构建单行命令的重要组件之一。
xargs命令应该紧跟在管道操作符之后,以stdin作为主要的源数据流,使用格式:
COMMAND | xargs [OPTIONS] ...
示例一:将多行输入转换成单行输出

示例二:将单行输入转换成多行输出

-n:是每行的最大参数的个数
空格是xargs的默认输入定界符,如下示例所示:

-d DELIM:以指定字符为输入定界符
示例三:读取stdin,将格式化参数传递给命令
定义一个简单脚本test.sh:
#!/bin/bash
#
echo $*"#"
定义一个脚本参数列表文件args.txt:

通过xargs命令可以实现一次向脚本传递n个参数,如:

有时候,除了向脚本传递一些可变参数外,还有一些固定不变的命令参数,如何实现变化的参数和固定的参数一起传递给脚本执行呢?
例如,要实现以下效果:
./test.sh -p arg1 -d
./test.sh -p arg2 -d
./test.sh -p arg2 -d
这时候就用到-I选项了,先看效果:

-I {} 指定了替换字符串。对于每一个命令参数,字符串{}都会被从stdin读取到的参数替换掉。
示例四:与find配合使用完成相应功能
最好的实现方式是:把find的输出作为xargs的输入,就必须将-print0与find结合使用,以字符null('\0')来分隔输出。
/*示例*/
find ./ -type f -name "*.txt" -print0 | xargs -0 rm -f
xargs -0 :将\0作为输入定界符
玩转xargs的更多相关文章
- 2.5玩转xargs
我们可以利用管道将一个命令的stdout(标准输出)重定向到另一个命令的stdin(标准输入).有些命令只能以命令行参数的形式接受数据,而无法通过stdin接受数据流.这时候就没法使用管道.那么xar ...
- LinuxShell脚本攻略--第二章 命令之乐
用 cat 进行拼接 文件查找与文件列表玩转 xargs 用 tr 进行转换排序临时文件命名与随机数分割文件和数据根据扩展名切分文件名mv 批量重命名文件交互输入自动化 cat: echo 'Text ...
- Shell-2-命令之乐
1.cat (1)基本用法 [root@cai tmp]# cat 1.txt 2.txt this is a test1 this is a test 2 (2)cat -s file(删除额外空白 ...
- 玩转spring boot——结合阿里云持续交付
前言 在互联网项目中,项目测试.部署往往需要花费大量时间.传统方式是在本地打包.测试完毕程序,然后通过ftp上传至服务器,再把测试的配置文件修改为生产环境的配置文件,最后重新运行服务.这一过程如果交给 ...
- [Linux] PHP程序员玩转Linux系列-腾讯云硬盘扩容挂载
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...
- kubernetes之coredns玩法
一.概述 新版本的kubernetes默认使用了coredns,这里就不赘述了.直达车:https://coredns.io/.https://kubernetes.io/docs/tasks/adm ...
- 玩转Linux
玩转Linux操作系统 说明:本文中对Linux命令的讲解都是基于名为CentOS的Linux发行版本,我自己使用的是阿里云服务器,系统版本为CentOS Linux release 7.6.1810 ...
- 使用grep命令,玩转代码审计寻找Sink
好久没分享东西了,今天分享个实用代码审计技巧 使用grep,玩转代码审计,适用于linux/mac,windows需要另行安装grep: 使用场景如下:快速寻找项目中所有的Sink,快速寻找符合适配条 ...
- 玩转spring boot——快速开始
开发环境: IED环境:Eclipse JDK版本:1.8 maven版本:3.3.9 一.创建一个spring boot的mcv web应用程序 打开Eclipse,新建Maven项目 选择quic ...
随机推荐
- Java 基础 - instanceof关键字
instanceof 父类子类 结论: 子类 instanceof 父类 == true 父类 instanceof 子类 == false public class Test { public st ...
- Emacs基本操作说明
- C/C++ 字符、字符串转十六进制(支持中文字符串转换)
#include <string> // std::string #include <sstream> // std::stringstream /** * #purpose ...
- MAMP mysql无法启动 总结(以后有发现再添加)
1.错误信息Can't start server : Bind on unix socket: Address already in use 解析:主要原因是上次关闭Mysql是出现异常而导致的, 解 ...
- 云-腾讯云-笔记:pom.xml 配置
ylbtech-云-腾讯云-笔记:pom.xml 配置 1. pom.xml返回顶部 1.1 com.qcloud / 腾讯云 <!-- https://mvnrepository.com/ar ...
- JavaScript编码指南
出其不意 1920年,William Strunk Jr的<英文写作指南>出版了,这本书给英语的风格定下了一个规范,而且已经沿用至今.代码其实也可以使用相似的方法加以改进. 本文接下来的部 ...
- 第十五篇:java操作oracle踩坑之旅
最近刚做完mysql的各种需求,项目要满足oracle数据库,于是走上了漫漫的踩坑之路,同行可以看看以免踩坑……第一条:oracle建表的时候不需要在建表sql语句后指定默认字符集 DEFAULT C ...
- java-day07
API 应用程序编程接口 Scanner类 将键盘输入的数据到程序中 1.导包 2.创建 Scanner 对象名 = new Scanner(); 3.使用 int num = 对象名.nextInt ...
- js 实现加载百分比效果
效果: html: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...
- 2019-7-1-Roslyn-让编译时候-Message-内容默认输出
title author date CreateTime categories Roslyn 让编译时候 Message 内容默认输出 lindexi 2019-07-01 14:16:59 +080 ...