zoukankan      html  css  js  c++  java
  • exec和xargs

     参考:http://www.cnblogs.com/itxdm/p/5936907.html

    一. 先复习下find命令

    1. name参数

    find -name tom 或 find -iname tom    #其中参数 -iname不区分大小写

    2. type参数

    find /root -name rabbit -type f

    普通文件用 f 表示;符号连接用 l 表示;普通目录用 d 表示;字符设备用 c 表示;块设备用 b 表示;套接字用 s 表示

    3. size参数

    find /root -type f -size 10M

    注:关于 “ -size 10M ” 在大小单位上是允许 “+” “-” 操作的。即 “+10M” 大于10M, “-10M” 小于10M 

    find的参数还有很多已经和本文后面内容无关,这里列出三个。文章继续...

    比如:-perm可以选择权限,-user可是选择用户,-group可以选择用户组等 

    二.  exec  --- 它其实是find命令的一个重要参数

    -exec command:command 为其他指令,-exec后面可再接额外的指令来处理搜寻到的结果。

    { }代表的是「由 find 找到的内容」,如上图所示,找到的结果会被放置到 { } 位置中; 注意{ }前后有空格。
    -exec一直到 ; 是关键字,代表找到额外动作的开始(-exec)到结束(),在这中间的就是找到指令内的额外动作

    因为「;」在bash的环境下是有特殊意义的,因此利用反斜线来跳脱。

    # 显示

    find /root/.ssh -exec ls -l {} ;

    #删除

    find /root -size 10M -exec rm -rf {} ;

    # 重命名

    find /root -name tom -exec mv {} tom_rename ;

    # 移动

    find /root -name tom_rename -exec mv {} /tmp ;

    三. xargs

    1. 定义界定符

    在 “xargs” 中是有 “界定符” 的,类似 find 中 { } ,代表的是「由 xargs 找到的内容」。xargs 不需要 “;” 做结束符。

    另:关于定义界定符(-I),有一点很多文章都没有强调

    使用 xargs 命令时并不是一定要使用 “{}” 方括号的,可能是因为 find 命令的( -exec )默认是 “{}” (为了统一)使用其他的定义符都是可以的(甚至你都可以用英文,数学等作为定义界定符)

    2. “xargs” is command not parameter(参数)

    xargs 是一条命令,您可以通过 help 或者 man 查询到关于 xargs 的详细信息。

    这条性质赋予了 xargs 更多的可能性,而不仅仅受限于 find 命令

    3. xargs命令的使用

    # 显示

    find /root -name Tom | xargs -I {} ls -ld {}

    # 删除

    find /root -name Tom | xargs rm -rf

    # 重命名

    find /root -name RABBIT | xargs -I - mv - RABBIT_NEW

    # 移动

    find /root -name RABBIT_NEW | xargs -I 8 mv 8 /tmp

    注意:xargs命令貌似不支持egrep过滤出来的内容,支持grep的过滤,例如

    ls | grep ^.[0-9].* | xargs -I{} rm -rf {}     可删除过滤出来的多个文件夹

    ls | egrep ^.[0-9]+.* | xargs -I {} rm -rf {}   无效

  • 相关阅读:
    为什么重复值高的字段不能建索引(比如性别字段等)
    【转】微服务架构技术栈选型手册
    【转】使用索引为什么能提高查询速度?
    SpringBoot读取配置文件(从classpath/file读取yml/properties文件)
    集合总结--ArrayList、LinkedList、HashMap
    HashMap问答
    【转】http的keep-alive和tcp的keepalive区别
    【转】大数据分析中Redis怎么做到220万ops
    哪个中年IT男不是一边面对危机,一边咬牙硬抗【转】
    SVN clean失败解决方法【转】
  • 原文地址:https://www.cnblogs.com/regit/p/8196080.html
Copyright © 2011-2022 走看看