Linux xargs命令详解
find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部
xargs要处理的文件如果不是在结尾,需要加上 -i这个参数
xargs常见命令参数
args:xargs的默认命令是echo,空格是默认定界符。 默认替换符号是{}
-I {}批定了替换字符串,表示文件内容,能循环按要求替换相应的参数 使用-I指定一个替换字符串{},这个字符串在xargs扩展时会被替换掉,
当-I与xargs结合使用,每一个参数命令都会被执行一次:
-n num 后面加次数,表示命令在执行的时候一次用的argument的个数,默认是用所有的
-d 自定义定界符
常用的命令展示
多行内容的单输出且每行3个
[root@localhost ftl]# cat /home/omc/ftl/logs.txt |xargs -n3

查找系统中的每一个普通文件,然后使用xargs命令来测试它们分别属于哪类文件
[root@localhost log]# find /home/omc/ -maxdepth 1 -user root -type f | xargs file {}

在/var/log/下查找log文件,复制文件到/home/omc/ftl且把结果保存到/home/omc/ftl/logs.txt文件中
[root@localhost log]# find /var/log/*.log -type f | xargs -i cp {} /home/omc/ftl
[root@localhost log]# ll -ltr /home/omc/ftl
[root@localhost log]# find /var/log/*.log -type f > /home/omc/ftl/logs.txt
[root@localhost log]# ll /home/omc/ftl/logs.txt

删除 /home/omc/ftl/下的log文件
[root@localhost ftl]# ll *.log |xargs rm -rf {} 【错误】
[root@localhost ftl]# ls *.log |xargs rm -rf {} 【正确】

在当前目录下查找所有用户权限644的文件,并更改权限600
[root@localhost ftl]# ll *.txt
[root@localhost ftl]# find /home/omc/ftl -perm 644 | xargs chmod 600
[root@localhost ftl]# ll *.txt

用grep命令在当前目录下的所有普通文件中搜索omc这个词
find /etc/ -name \* -type f |xargs grep "omc" >/tmp/ftl
==>find /etc/ -name "*" -type f |xargs grep "omc" >/tmp/ftl

使用-i参数默认的前面输出用{}代替,-I参数可以指定其他代替字符,如例子中的[]
find /var/ -name "*.log" |xargs -I [] cp [] /tmp/ 【xargs 默认用是i表示{},用I可以替换符号】
ll -ltr /tmp/ | more 5

xargs的-p参数的使用
find . -name "*.log" |xargs -p -i cp {} ../ltesig/
【-p参数会提示让你确认是否执行后面的命令,y执行,n不执行】

利用for循环实现和xargs同样的效果
find /home/omc/ -name *.txt | xargs -i cp {} /home/omc/h
cat logs.txt |while read line;do echo $line >> logs_bak.txt; done;

利用xargs关闭不常用的系统启动软件
chkconfig | awk '{print $1}' | grep -Ev "sshd|network|crond|sysstat|rsyslog" | xargs -I{} chkconfig {} off

xargs总结示范:
find . -name "*.log" |xargs -p -i cp {} ../ltesig/ 【正确】
find . -name "*.log" |xargs -p cp {} ../ltesig/ 【错误】
find . -type f -print | xargs file 【正确】
find . -type f -print | xargs rm {} 【错误】
总结一下:如果命令后面可以跟内容,且没有目的路径的时候,可以省略-i,否则得加上
Linux xargs命令详解的更多相关文章
- linux xargs 命令详解
xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具.它把一个数据流分割为一些足够小的块,以方便过滤器和命令进行处理.通常情况下,xargs从管道或者stdin中读取数据,但是它也能够从 ...
- 【转帖】linux sort,uniq,cut,wc,tr,xargs命令详解
linux sort,uniq,cut,wc,tr,xargs命令详解 http://embeddedlinux.org.cn/emb-linux/entry-level/201607/21-5550 ...
- 【转发】linux yum命令详解
linux yum命令详解 yum(全 称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理, ...
- linux yum 命令 详解
linux yum命令详解 yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能 ...
- [转帖]xargs命令详解,xargs与管道的区别
xargs命令详解,xargs与管道的区别 https://www.cnblogs.com/wangqiguo/p/6464234.html 之前一直说要学习一下 xargs 到现在为止也没学习.. ...
- linux awk命令详解
linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...
- linux cat 命令详解
linux cat 命令详解 http://linux.chinaunix.net/techdoc/system/2007/11/16/972467.shtml adb shell su //这个不一 ...
- 【初级】linux rm 命令详解及使用方法实战
rm:删除命令 前言: windows中的删除命令大家都不陌生,linux中的删除命令和windows中有一个共同特点,那就是危险,前两篇linux mkdir 命令详解及使用方法实战[初级]中我们就 ...
- Linux netstat命令详解
Linux netstat命令详解 一 简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多 ...
随机推荐
- 复刻smartbits的国产网络测试工具minismb-如何测试ip限速
复刻smartbits的网路性能测试工具MiniSMB,是一款专门用于测试智能路由器,网络交换机的性能和稳定性的软硬件相结合的工具.可以通过此工具测试任何ip网络设备的端口吞吐率,带宽,并发连接数和最 ...
- ruby楼层排序问题
求教楼层排序问题 要求正确楼层排序为: B2,B1,1F,2F,3F...10F,11F 现有这13个无序的楼层 怎么排列成上面的格式? 求教 luikore 1楼 , 19小时前 1人喜欢 sort ...
- 跟大佬一起读源码:CurrentHashMap的扩容机制
并发编程——ConcurrentHashMap#transfer() 扩容逐行分析 前言 ConcurrentHashMap 是并发中的重中之重,也是最常用的数据结构,之前的文章中,我们介绍了 put ...
- 关于Sqlite的一个demo
直接上代码: class DBHelperSqlite { ILog logger = LogManager.GetLogger(System.Reflection.MethodBase.GetC ...
- Bootstrap中的datetimepicker插件用法总结(转载)
datetimepicker用法总结 目录 datetimepicker用法总结 目录 简述 官方文档 选项属性 1 format 格式 2 weekStart 一周从哪一天开始 3 startD ...
- java SE 入门之输入输出(第四篇)
在第一篇,八大基本类型的时候,我就介绍了输出,当然,这些输出都是简单的,后续写到流的时候,在细化输入输出. 现在只要求看懂输入输出.输入其实就是接受键盘的输入. public class Hello ...
- 深复制与浅复制&&strong,copy修饰符总结
又是一个老生常谈的话题,可是貌似这个问题,好多ios开发工程师并不能理解透彻,所以简单记录分析一下深复制与浅复制的原理以及strong,copy修饰符的原理和使用. 一.深复制与浅复制 ...
- TortoiseGit用户手册
3 配置TortoiseGit 3.1 生成公钥 生成SSH安全密钥,提供给GIT版本库管理员以访问Git 版本库,点击桌面上生成的图标 然后执行执行“ssh-keygen”生成自己的公钥: 一路回车 ...
- Unity3d之MonoBehavior自带方法的执行顺序
首先贴一张图(从其他地方摘录的,不记得出处,如果有小伙伴知道可以评论留言) 看了以后脑子有个大概的概念,可还是一知半解的感觉(接触Unity也有2年之久,却从来没想过弄清楚心中这团迷雾,总是囫囵吞枣用 ...
- java网络编程(TCP详解)
网络编程详解-TCP 一,TCP协议的特点 面向连接的协议(有发送端就一定要有接收端) 通过三次连接握手建立连接 通过四次握手断开连接 基于IO流传输数据 传输数据大小 ...