xargs的用法
处理带有空格的文件名
#我们创建了3个日志文件, 且故意让文件名称中都含有空格
[roc@roclinux ~]$ for((i=;i<;i++)); do touch "test ${i}.log";done
#我们列出创建的文件
[roc@roclinux ~]$ ls -1F
test .log
test .log
test .log
xargs 提供了-0选项,允许将 NULL 作为分隔符,而 find 命令也心有灵犀地提供了对应的选项来产生以 NULL 字符作为分隔符的输出。
find 命令提供的对应方法是 -print0 选项,在文件名之后输出 NULL,而不像 -print 选项那样输出换行符(换行符会被 xargs 替换成空格)。
[roc@roclinux ~]$ find . -name '*.log' -print0 | xargs - rm -f
需要用户确认
如果在前一个命令的标准输出中,会有一些参数是你不希望或者不确定是否要传送给后面命令的,这个时候我们就希望 xargs 在传送参数前和我们确认一下。而-p选项恰好可以实现这个愿望,我们可以输入 y 或者 n 来选择是否要执行当前命令:
[roc@roclinux ~]$ find . -type f |xargs -p rm -f
rm -f ./china.txt ./usa.txt ./japan.txt ?...n
每一条都需要询问:
[roc@roclinux ]$ find . -type f |xargs -p -n rm -f
rm -f ./china.txt ?...n
rm -f ./usa.txt ?...y
rm -f ./japan.txt ?...n
遇到就停止
比如,我们正在处理一份日志文件 country.list 中的内容,将日志文件中的字符以空行作为分隔符依次 echo 出来,一旦遇到 korea 便终止退出:
[roc@roclinux ~]$ echo "china usa korea japan" > country.list [roc@roclinux ~]$ cat country.list
china usa korea japan [roc@roclinux ~]$ cat country.list | xargs -E 'korea' echo
china usa
你可能一生都不会遇到的参数过长报错
我们来模拟一个这样的场景,新建 10 万个日志文件,并且尝试用 rm 命令一次性删除:
[roc@roclinux ~]$ for((i=;i<;i++)); do touch test${i}.log;done
[roc@roclinux ~]$ rm $(find . -type f -name '*.log')
-bash: /bin/rm: Argument list too long
出现了“Argument list too long”报错,这说明 rm 可接受的参数长度达到了极限。这其实并非 rm 的错,而是系统限制了参数的长度。通过下面的命令可以查看到系统的参数长度限制值:
[roc@roclinux ~]$ getconf ARG_MAX
[roc@roclinux ~]$ find . -name '*.log' -print | xargs rm
把*.txt的文件重命名为*.txt.bak
ls *.txt |xargs -t -i mv {} {}.bak
查找文件并压缩
这样就把“jpg”的文件压缩了。
find / -name *.jpg -type f -print | xargs tar -cvzf images.tar.gz
xargs的用法的更多相关文章
- Linux中 xargs 命令用法
xargs命令: xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具. 1.它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令 ...
- 【转】Linux中xargs的用法
xargs大 多数 Linux 命令都会产生输出:文件列表.字符串列表等.但如果要使用其他某个命令并将前一个命令的输出作为参数该怎么办?例如,file 命令显示文件类型(可执行文件.ascii 文本等 ...
- linux下xargs命令用法详解 【转】
转自:http://blog.chinaunix.net/uid-128922-id-289992.html xargs在linux中是个很有用的命令,它经常和其他命令组合起来使用,非常的灵活. xa ...
- linux下xargs命令用法详解
原文:http://blog.chinaunix.net/uid-128922-id-289992.html xargs在linux中是个很有用的命令,它经常和其他命令组合起来使用,非常的灵活. xa ...
- 转 linux下xargs命令用法详解
xargs在linux中是个很有用的命令,它经常和其他命令组合起来使用,非常的灵活. xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤 ...
- xargs用法详解
前言 最近我从svn上checkout出来了一个文件夹,然后加入了git的跟踪目录.用过svn的同学可能知道,这个文件夹里面每一层级都有个.svn隐藏文件夹,需要删除他们.本来我准备笨拙地一个一个手动 ...
- xargs用法
xargs是一个很有用的命令,它可以实现并行,同&有异曲同工之妙,在大批量管理服务器时非常有用 xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具.它擅长将标准输入数据 ...
- Linux xargs将输出数据流转换成命令参数
200 ? "200px" : this.width)!important;} --> 介绍 我们可以利用管道将一个命令的“标准输出”作为另一个命令的“标准输入”:但是这里的 ...
- xargs命令
xargs命令 常用工具命令 xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具.它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令 ...
随机推荐
- mysql 添加注释
给表添加注释: alter table m_tb100_disabledsoldier comment '残疾士兵'; 给表中的字段添加注释alter table m_tb100_disable ...
- PatchMatchStereo可能会需要的Rectification
在稠密三维重建中,rectification可以简化patch match的过程.在双目特征匹配等场景中其实也用得到,看了一下一篇论文叫< A Compact Algorithm for Rec ...
- SpringBoot系列教程web篇Servlet 注册的四种姿势
原文: 191122-SpringBoot系列教程web篇Servlet 注册的四种姿势 前面介绍了 java web 三要素中 filter 的使用指南与常见的易错事项,接下来我们来看一下 Serv ...
- WeakhashMap源码2
public class WeakHashMapIteratorTest { @SuppressWarnings({ "rawtypes", "unchecked&quo ...
- jquery的Layer弹出框操作
在layer中,我们要先获取窗口的索引,然后再进行操作. var index = parent.layer.getFrameIndex(window.name); //获取窗口索引 $("# ...
- [转帖]10分钟看懂Docker和K8S
10分钟看懂Docker和K8S https://zhuanlan.zhihu.com/p/53260098 2010年,几个搞IT的年轻人,在美国旧金山成立了一家名叫“dotCloud”的公司. 这 ...
- Visual Studio 技巧
Visual Studio 技巧 1 常用设置 2 常用快捷键 2.1 系统默认快捷键 2.2 自定义快捷键 3 修复系统错误 1 常用设置 Text Editor -> All Languag ...
- Quartz.net使用笔记
一.需求场景:每天固定时间执行某个行为/动作. 一开始想用定时器,后来无意间发现了这个插件,感觉功能太强大了,完美解决了我的问题. 二.下载地址:https://www.quartz-schedule ...
- VS开发C++控制台应用程序(示例)
注:笔者使用的VS版本为2019.1.打开VS2019,选择文件 -> 新建 -> 项目 2.选择项目新建项目时选择C++“控制台应用”语言:C++平台:Windows项目类型:控制台 3 ...
- Spring4参考手册中文版
Spring4参考手册中文版 前言 https://github.com/b2gats/stone-docs/blob/master/spring-4-beans.md Part III. 核心技术 ...