zoukankan      html  css  js  c++  java
  • find文件后cp、rm

    复制:

    find <src-path> -name 'some names'  -exec cp {} <dest-path> ;
    find <src-path> -name 'some names'  | xargs -i cp {} <dest-path>
    find <src-path> -name 'some names'  | xargs -I {} cp {} <dest-path>
    find <src-path> -name 'some names'  | xargs -I [] cp [] <dest-path>
    find <src-path> -name 'some names'  | xargs cp -t <dest-path>

    其中,-i 表示 find 传递给xargs的结果由{}来代替,{}为默认占位符,-i为废弃选项,建议用-I。-I表示以什么为xargs结果的占位符。
    例如:

      ------------------->$ ls
      1.txt 2.txt 3.txt

      ------------------->$ find . -type f | xargs -I [] mv [] [].bak

      1.txt.bak  2.txt.bak  3.txt.bak

    只能将文件拷贝到指定目录,拷贝的文件不会保留原来目录结构,如果子目录下有重叠的文件,将会覆盖,解释如下:

    查看当前目录.txt文档
    ------------------->$ find . -name '*.txt'
    ./b/3.txt
    ./b/2.txt
    ./b/1.txt
    ./d/3.txt
    ./d/2.txt
    ./d/1.txt
    
    检查rm目录是否为空目录
    ------------------->$ ll ../../rm/
    total 0
    
    将查找到的.txt文档拷贝到rm目录
    ------------------->$ find . -name '*.txt' | xargs cp -t ../../rm/
    
    查看rm目录
    ------------------->$ ls
    1.txt  2.txt  3.txt

    注意,rm目录下不是以下结构
    ./b/3.txt
    ./b/2.txt
    ./b/1.txt
    ./d/3.txt
    ./d/2.txt
    ./d/1.txt

    拷贝查找到文件的过程如下:
    cp ./b/3.txt ../../rm/
    ...
    cp ./d/3.txt ../../rm/ # 覆盖上一次拷贝的3.txt
    ...

    删除:

    rm `find . -name 'some names'`
    find . -name 'some names' -exec rm {} ;
    find . -name 'some names' -ok rm {} ;
    find . -name 'some names' | xargs -i rm {} 
    find . -name 'some names' | xargs -I [] rm [] 
    find . -name 'some names' | xargs rm

    其中-ok询问是否确定删除每一项。对于最后一条命令,因为xargs默认将输出流放到最后,所以也可以用xargs rm。

    同时也可以将cp、rm替换成其他命令,比如mv,ls等等。

  • 相关阅读:
    【MVC】过滤器
    【C#】开发可以可视化操作的windows服务
    【JS】导出table到excel,同时兼容FF和IE
    【.Net】文件并发(日志处理)--队列--Redis+Log4Net
    【.Net】从.NET平台调用Win32 API
    『录』最全前端资源汇集
    $.ajax()方法详解
    mvc的视图中显示DataTable的方法
    C# 对XML基本操作总结
    Ninject简介
  • 原文地址:https://www.cnblogs.com/drizzlewithwind/p/5713146.html
Copyright © 2011-2022 走看看