• 2.7 xargs和exec详解【转】


    本文转载自:http://ask.apelearn.com/question/13323

    常用在查找中exec主要是和find一起配合使用,而xargs就要比exec用的地方要多了。

    exec  应用
    使用find命令时,经常使用一个选项就是这个-exec了,比如,查找当前目录创建时间大于10天的文件并删除:

    # find . -mtime +10 -exec rm -rf {} ;这个命令中也是把{}作为前面find出来的文件的替代符,后面的 为 ; 的脱意符,不然shell会把分号作为该行命令的结尾。这个-exec有时候也挺实用的,它同样可以实现刚刚上面批量更改文件名的需求:
    [root@localhost test]# ls
    1.txt_bak  2.txt_bak  3.txt_bak  4.txt_bak  5.txt_bak
    [root@localhost test]# find ./*_bak -exec mv {} {}_bak ;
    [root@localhost test]# ls
    1.txt_bak_bak  2.txt_bak_bak  3.txt_bak_bak  4.txt_bak_bak  5.txt_bak_bak


    # find ./*_bak    查找文件     -exec mv {} {}_bak ;    将其重命名(  -exec有并且的意思但是有不完全一样,因为这里是一条命令)



    xargs应用



    它的作用就是把管道符前面的输出作为xargs后面的命令的输入。它的好处在于可以把本来两步或者多步才能完成的任务简单一步就能完成。

    [root@localhost ~]# echo "121212121212" > 123.txt
    [root@localhost ~]# ls 123.txt | xargs cat
    121212121212


    xargs常常和find命令一起使用,比如,查找当前目录创建时间大于10天的文件,然后再删除。

    [root@localhost ~]# find . -mtime +10 |xargs rm
    这种应用是最为常见的,xargs后面的rm 也可以加选项,当是目录时,就需要-r选项了。


    xargs的这个功能不叫什么,它的另一个功能才叫神奇。


    例如:
    现在我有一个这样的需求,查找当前目录下所有.txt的文件,然后把这些.txt的文件变成.txt_bak。正常情况下,我们不得不写脚本去实现,但是使用xargs就一步。

    [root@localhost ~]# mkdir test
    [root@localhost ~]# cd test
    [root@localhost test]# touch 1.txt 2.txt 3.txt 4.txt 5.txt
    [root@localhost test]# ls
    1.txt  2.txt  3.txt  4.txt  5.txt
    [root@localhost test]# ls *.txt |xargs -n1 -i{} mv {} {}_bak
    [root@localhost test]# ls
    1.txt_bak  2.txt_bak  3.txt_bak  4.txt_bak  5.txt_bak


    xargs -n1 –i{} 类似for循环,
    -n1意思是一个一个对象的去处理,
    -i{}把前面的对象使用{}取代,
    mv {} {}_bak 相当于 mv 1.txt 1.txt_bak。
    你刚开始接触这个命令时也许有点难以理解,多练习一下你就会熟悉了,
    记住这个应用,很实用。
    也可以这样
    # ls *.txt |xargs -n1 -i{} cp {} {}_bak 

  • 相关阅读:
    成功的两大法宝:自我管理与积累人脉
    CEO十五条法则 (是基于对CEO更加的关怀)
    百度李彦宏教你创业七大招!非常实用
    商业领袖摘下"帽子"才能炼成极致
    Alter index coalesce VS shrink space
    sort_area_size参数的一些表现
    Difference between parameter COMPATIBLE and OPTIMIZER_FEATURES_ENABLE
    Oracle常用的几个父栓
    Know more about RAC GES STATISTICS
    ORA07445 [SIGBUS] [Object specific hardware error]错误一例
  • 原文地址:https://www.cnblogs.com/zzb-Dream-90Time/p/7994668.html
Copyright © 2020-2023  润新知