zoukankan      html  css  js  c++  java
  • 学习LINUX中实用的命令>>>xargs第一部分!!!学习经验分享。

    握着鲜花的屠夫!!!!!!

    非常清晰,就是找到绝对路径后去除0x0A字符简称换行。。。由tar去打包不过这串代码操作存在有问题!!!
    经过测试发现了这串代码的问题所在,在于传递给xargs时它是判断空格为分隔符,所以导致打包时有很多路径是错误或找不到。
    修改后的代码

     find / -name '*.jpg' -type f -print0 |xargs -0 tar -cvzf images.tar.gz  

    仔细的小伙伴可能发现了!有两处发生变化  “-print0” “-0” 这样子就可以解决报错的问题。

    如果想探究原理的大兄弟呢,可以分段测试,先测试-print0加个数字0的结果是怎么样的,再测试xargs后面加个-0后的样子。

    接下来我为各位节省了时间,由于变化都是不可视所以我们用到了16进制转换器去寻找答案。

     这是报错的那串命令行,我们选择一段进行观察,由于有 xargs的处理分割符号为空格既十六进制的0x20 所以进行修改代码对照

    这TM都一样,既然结果是好的,就没必要再继续对照了。直接上man xargs看看官方解释

    叽里呱啦一大堆 简化官方描述是空值0x0 ,但我们看了依旧是0x20可能有代码机制吧,再识别完后用0x20进行填补。

    如果有小伙伴知道其中的深沉次的原理,可以留言!!!

     有了实例1的经验,我们大概已经熟悉了find命令和xargs的基本用途和用法。接下来给大兄弟们演示不用xargs脚本也能达到同样效果的方法

    这种代码是为了解决cp中存在的一个问题,不能够批量复制不同目录下的不同类文件,原理其实也很简单下面会细讲。

    find / -name '*.jpg' -type f -print0 |xargs -0 -i cp -rf {} /root/image_to/
    

      如果比较经常用find或者xargs的大兄弟可能就容易理解,但还是照顾下新伙伴分析下这段命令行吧。

    1./就是根目录啦 2.-name后面加你要搜索的关键词  3.'*'星号是包含所有的意思 4.-type f(类型f意思是普通文件) 5.-print0(打印并且去除尾部换行关键是数字0)

    6. | 这个在linux 的bash 中表达的大概意思是连续执行,就跟编程语言中的你依然在函数集里面,可以运用运算的结果. 

    7. 如果前面去除了换行既十六进制0x0A,且不做其他处理,那么他们就会全部合成一条,导致无法处理。所以后面加了 -0在尾部添加0x00空字符.

    8. -i 大致用途呢 如果替代命令后面有加{}就需要在代替前面加-i,代替命令指的是类似cp这样的 -I 功能比较接近感兴趣可以用man去了解

    9.cp 就是我们平时用的那个,-rf 强制执行 >>{} 全部分化成一条一条执行,这样cp才能实现批量处理来自不同目录的文件  /root/image_to/就是复制到哪。

    find / -name '*.jpg' -type f  |while read line; do `cp -rf ${line} /root/images_to/`; done; ls /root/images_to/|wc -l; 

    这段代码有几处不同,功能与上段代码跟接近,但是上段代码效率更高点,如果你是需要经常写脚本去优化那么就会对这不陌生

    while read line;这段其实就是跟c语言中的一样read就是读取寄存器里的数据既find所找到的jpg文件,然后分线给line循环处理至END.

    do 跟C语言中有点不同不过大同小异,意思是一样的 。重点说下这两个点 ` ` -----与' '后面两个是不一样的。一般用于执行系统命令!

    ok ${line}意思其实就是读取{}中的变量 $就是专门读取函数专用的。;done ;完成意思 

    | wc -l :意思是统计这个文件夹里的文件数量。为了测试两段代码的效率做统计用的,可加可不加

              THE END!!!

         第一部分就结束了,博主正在加急第二部分!

  • 相关阅读:
    【2020-05-03】发掘自己内心那个原点的力量
    【2020-05-02】要适应不确定性
    【2020-05-01】人生十三信条
    【一句日历】2020年5月
    【2020-04-30】每一句话,都是自我学习
    【2020-04-29】勤奋是一种享受
    【2020-04-28】自我观念强化的实践
    【2020-04-27】自我提升的里程碑
    【2020-04-26】还在温室里的自己
    家谱树(信息学奥赛一本通 1351)
  • 原文地址:https://www.cnblogs.com/eternalnight/p/13875434.html
Copyright © 2011-2022 走看看