zoukankan      html  css  js  c++  java
  • find ./ -name *.bak | xargs rm -rf

    xargs时间久了没用,总是忘了rm -rf 后面的f,于是不成功。不想老是查,所以从网上找了些资料,先存起来。

    #find ... -exec rm {} ; 

     #find ... | xargs rm -rf 

    两者都可以把find命令查找到的结果删除,其区别简单的说是前者是把find发现的结果一次性传给exec选项,这样当文件数量较多的时候,就可能会出现“参数太多”之类的错误,相比较而言,后者就可以避免这个错误,因为xargs命令会分批次的处理结果。这样看来,“find ... | xargs rm -rf”是更通用的方法,推荐使用!

    rm不接受标准输入,所以不能用find / -name "tmpfile" |rm

    -exec   必须由一个   ;   结束,而因为通常   shell   都会对   ;   进行处理,所以用   ;   防止这种情况。   
      {}   可能需要写做   '{}',也是为了避免被   shell   过滤

    find ./ -type f -exec grep iceskysl {} /dev/null ; 
    ./表示从当前目录找 
    -type f,表示只找file,文件类型的,目录和其他字节啥的不要 
    -exec 把find到的文件名作为参数传递给后面的命令行,代替{}的部分 
    -exec后便跟的命令行,必须用“ ;”结束

    #find ./ -type f -name "*.cpp"|xargs grep "test" -n
    #find . -name "*cpp" -exec grep "test" {} ; -print

    find / -name *.log | xargs -n 1000 rm -f
    因为rm 接收参数的数量是有限的, 所以每次传 1000个参数给他,这样可以满足你的需求。

    补充一点,这种写法其实不是特别严谨,因为如果日志文件的命名有特殊字符的话,上面命令将会对特殊字符文件识别不了

    严谨的写法
    find / -name '*.log' -print0 |xargs -0 -n 1000 rm -f
    这里前面的print0 和 后的-0 都是对特殊字符进行处理,也就是说他会认识如"aa bb cc " 这种文件名

  • 相关阅读:
    gzip是一种数据格式,deflate是一种压缩算法
    js 实现图片上传 续
    iframe 元素会创建包含另外一个文档的内联框架(即行内框架)
    HTTPS简介----
    回归测试
    HTTP 返回码 400
    js 实现 一张图片的上传
    121. Best Time to Buy and Sell Stock
    119. Pascal's Triangle II
    118. Pascal's Triangle
  • 原文地址:https://www.cnblogs.com/wangchaonan/p/11077131.html
Copyright © 2011-2022 走看看