一,说xargs命令前,说一下什么是shell编程

什么是shell编程呢,说白了就是按一定的规则把各种命令组织起来,完成一定的事情。纯属个人理解,哈哈。不管是交互式的shell,还是非交互的shell,它都是由一些命令组成的。

所以命令很重要。xargs就是其中之一,并且还是相当重要的一个命令,为什么说它重要呢,因为他和能其他命令结合使用,把一个命令的输出,当作参数传给另一个命令。这个根find命令参数中的exec很像,但是不同:以下4点在网上找的,第一点,是亲身体验过,家里我用的是archlinux,当你通过exec传很多数据给后面的命令时,会卡在哪儿,其他的没试过,如果有兴趣的朋友可以自己比较一下他们速度,

[zhangy@BlackGhost music]$ time find /home/zhangy/download/ -name ".gz" -print
real    0m0.053s
user    0m0.003s
sys     0m0.003s

1,使用find 的exec选项去处理匹配到的选项时,find 一次性将匹配到得参数传给exec执行。但有的系统,对exec 传的参数长度有限制,这样在find 命令执行几分钟后会报溢出,错误信息通常是“参数列太长”或“参数列溢出"。

2,xargs 与find 命令合用的时候,find 把匹配到得命令传递给xargs ,xargs 每次只获取一部分文件,而不是全部。分批处理。

3, 使用exec选项,会为匹配的每个文件处理分配个进程,并不是将匹配到的文件作为一个参数一次执行,这样就会触发多个进程,进而使系统性能下降,影响处理效率。

4,xargs则只有一个进程、但xargs 处理是否分批 ,批次大小,也会受系统些可调参数影响。

二,xargs应用实例
1,找出文件,改变文件所属用户
#将把当前目录下面以test开头的文件用户改为zhangy
[root@BlackGhost download]# find . -name "test*"  -print | xargs chown zhangy:users#查看当前目录中以test开头的文件所属用户
[root@BlackGhost download]# find . -name "test*"  -print -exec ls -al {} \;
./test.sql.zip
-rw-r--r-- 1 zhangy users 1981 Feb  2 16:05 ./test.sql.zip
./test.zip
-rw-r--r-- 1 zhangy users 164 May 23 22:54 ./test.zip
2,把系统的用户统计一下
[zhangy@BlackGhost download]# cut -d: -f1 < /etc/passwd | xargs echo >> /home/zhangy/userlist.txt
3,备份文件
[zhangy@BlackGhost ddd]$ ls |xargs -i cp {} {}.bak
cp test test.bak

转载于:https://www.cnblogs.com/linuxprobe/p/11013679.html

shell编程必须要掌握的命令-xargs相关推荐

  1. shell编程:定义简单标准命令集

    shell是用户操作接口的意思,操作系统运行起来后都会给用户提供一个操作界面,这个界面就叫shell,用户可以通过shell来调用操作系统内部的复杂实现,而shell编程就是在shell层次上进行编程 ...

  2. 命令行与shell编程系列之什么是命令行

    命令行与shell编程系列文章目录 第一章 什么是命令行 第二章 文件权限 第三章 文件的处理 第四章 磁盘和文件系统 第五章 理解shell解析器和shell进程 文章目录 命令行与shell编程系 ...

  3. Linux编程 23 shell编程(结构化条件判断 命令if -then , if-then ... elif-then ...else,if test)...

    一.概述 在上一篇里讲到了shell脚本,shell按照命令在脚本中出现的顺序依次进行处理,对于顺序操作已经足够了,但许多程序要求对shell脚本中的命令加入一些逻辑流程控制,这样的命令通常叫做 结构 ...

  4. shell编程基础(七): 处理文件命令sed与awk

    一.sed(以行为单位处理文件) sed意为流编辑器(Stream Editor),在Shell脚本和Makefile中作为过滤器使用非常普遍,也就是把前一个程序的输出引入sed的输入,经过一系列编辑 ...

  5. shell编程-使用complete实现linux命令自动补全

    一.背景介绍 我们在linux终端操作的时候经常使用tab按键自动补全命令.那么这个是怎么实现的呢?当自己写脚本的时候如何让用户也能自动补全呢?linux提供了两个重要的命令帮助我们实现: compg ...

  6. shell编程 之 test命令

    shell编程里的测试test命令基本可以分为3种数据类型,每种都不一样.个人更倾向于理解为条件语句的写法规则,就是test加条件加判断语句. 1 数值类型 基本可以分为6个判断:-eq等于,-ne不 ...

  7. 终于要把魔爪伸向shell编程了_命令行参数数量预检测——莫韵乐的小脚印笔记

    终于要把魔爪伸向shell编程了_命令行参数数量预检测 有时候我们在时使用shell的时候都需要传入一些参数,但是有时候我们传入的命令行参数数量不正确就很容易发生错误,因此我们需要在需要传入参数的sh ...

  8. UNIX再学习 -- shell编程

    UNIX环境高级编程看了三章,遇到不少重定向等shell命令.本想到Linux时再讲,看来有必要提前了.之前有看过一本<嵌入式Linux软硬件开发详解>这本书里有简单介绍了一部分shell ...

  9. Bourne Shell及shell编程

    Bourne Shell及shell编程<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office ...

最新文章

  1. mysql 创建库 5.7_MySQL数据库之MySQL5.7创建用户时报错
  2. 未来趋势?通过无线技术管理汽车电池,可消除90%物理布线
  3. WFA 认证 启动 sigma_dut方法
  4. 【转】C#Socket编程详解(一)TCP与UDP简介
  5. 将字符串使用md5加密
  6. java 模拟 cmd_用JAVA模拟实现CMD命令行
  7. 【没有assembly目录】spark2.0.0启动时无法访问spark-assembly-*.jar的解决办法
  8. 【C#】C#获取本地的内网(局域网)和外网(公网)IP地址的方法
  9. (转)MFC消息机制
  10. 学生信息管理系统(SSM+JSP)
  11. 64位Win7 服务器运行失败
  12. 20年21年嵌入式校招薪资大曝光!!!
  13. 如何从瘫痪windows系统里面找到原来的IP地址设置
  14. 【Java.JMS】一个简单的JMS实例
  15. 最大后验估计(Maximum-a-Posteriori (MAP) Estimation) 【转】
  16. acm测试题目数据生成
  17. 微服务项目实战技术点汇总:“尚硅谷的谷粒在线教育” 一、教师管理模块
  18. nginx的请求转发配置
  19. ssm+jsp校友交流平台
  20. 【C++/笔试】传统OJ / ACM模式 读取输入总结

热门文章

  1. HyperLedger Fabric Introduction——区块链超级账本介绍
  2. IIS7 Request format is unrecognized.
  3. RotateWorldTest对层动作
  4. 被上海爱立信录取,GL
  5. 批量任务体现多线程的威力!
  6. django celery
  7. 496. Next Greater Element I - LeetCode
  8. ORA-28002: the password will expire
  9. ECharts.js学习(三)
  10. Ruby已死——必须关注的内存问题