美文网首页
shell命令学习:递归拷贝指定目录及子目录下的某一类型文件

shell命令学习:递归拷贝指定目录及子目录下的某一类型文件

作者: wuzhiguo | 来源:发表于2017-07-17 22:40 被阅读90次
    命令
    find
    sed
    paste
    
    为什么要实现这一功能?

    为了拷贝某一工程下的所有CMakeLists.txt,方便分析学习该工程的整个构建方式,以及学习整个工程的源码组织方式。

    脚本
    # clone directory recursively and its CMakeLists.txt files
    # copy directory
    find . -type d | sed 's/./mkdir -p ..\/clone_dir_arch/' | sh
    #tree ../clone_dir_arch
    
    # copy CMakeLists.txt
    #copyfiles=`find -name "CMakeLists.txt" | sed 's/./cp ./' `
    find -name "CMakeLists.txt" | sed 's/./cp ./' > cpy.txt
    echo "...copyfiles"
    cat cpy.txt
    
    #distfiles=`find -name "CMakeLists.txt" | sed 's/./..\/clone_dir_arch/' `
    find -name "CMakeLists.txt" | sed 's/./..\/clone_dir_arch/' > dst.txt
     
    echo "...distfiles"
    cat dst.txt
    
    echo "...merging"
    paste -d " "  cpy.txt dst.txt | cat | sh
    

    效果:

    clone_dir_arch/
    ├── examples
    │   ├── ace
    │   │   ├── logging
    │   │   │   └── CMakeLists.txt
    │   │   └── ttcp
    │   │       └── CMakeLists.txt
    │   ├── asio
    │   │   ├── chat
    │   │   │   └── CMakeLists.txt
    │   │   └── tutorial
    │   │       ├── CMakeLists.txt
    │   │       ├── timer2
    │   │       ├── timer3
    │   │       ├── timer4
    │   │       ├── timer5
    │   │       └── timer6
    │   ├── cdns
    │   │   └── CMakeLists.txt
    │   ├── CMakeLists.txt
    │   ├── curl
    │   │   └── CMakeLists.txt
    │   ├── fastcgi
    │   │   └── CMakeLists.txt
    │   ├── filetransfer
    │   │   ├── CMakeLists.txt
    │   │   └── loadtest
    │   ├── hub
    │   │   └── CMakeLists.txt
    │   ├── idleconnection
    │   │   └── CMakeLists.txt
    │   ├── maxconnection
    │   │   └── CMakeLists.txt
    │   ├── memcached
    │   │   ├── client
    │   │   │   └── CMakeLists.txt
    │   │   └── server
    │   │       └── CMakeLists.txt
    │   ├── multiplexer
    │   │   ├── CMakeLists.txt
    │   │   └── harness
    │   │       └── src
    │   │           └── com
    │   │               └── chenshuo
    │   │                   └── muduo
    │   │                       └── example
    │   │                           └── multiplexer
    │   │                               └── testcase
    │   ├── netty
    │   │   ├── discard
    │   │   │   └── CMakeLists.txt
    │   │   ├── echo
    │   │   │   └── CMakeLists.txt
    │   │   └── uptime
    │   │       └── CMakeLists.txt
    │   ├── pingpong
    │   │   └── CMakeLists.txt
    │   ├── procmon
    │   │   └── CMakeLists.txt
    │   ├── protobuf
    │   │   ├── CMakeLists.txt
    │   │   ├── codec
    │   │   │   └── CMakeLists.txt
    │   │   ├── resolver
    │   │   │   └── CMakeLists.txt
    │   │   ├── rpc
    │   │   │   └── CMakeLists.txt
    │   │   ├── rpcbalancer
    │   │   │   └── CMakeLists.txt
    │   │   └── rpcbench
    │   │       └── CMakeLists.txt
    │   ├── roundtrip
    │   │   └── CMakeLists.txt
    │   ├── shorturl
    │   │   └── CMakeLists.txt
    │   ├── simple
    │   │   ├── allinone
    │   │   ├── chargen
    │   │   ├── chargenclient
    │   │   ├── CMakeLists.txt
    │   │   ├── daytime
    │   │   ├── discard
    │   │   ├── echo
    │   │   ├── time
    │   │   └── timeclient
    │   ├── socks4a
    │   │   └── CMakeLists.txt
    │   ├── sudoku
    │   │   └── CMakeLists.txt
    │   ├── twisted
    │   │   └── finger
    │   │       └── CMakeLists.txt
    │   ├── wordcount
    │   │   └── CMakeLists.txt
    │   └── zeromq
    │       └── CMakeLists.txt
    └── muduo
        ├── base
        │   ├── CMakeLists.txt
        │   ├── output
        │   └── tests
        │       └── CMakeLists.txt
        └── net
            ├── CMakeLists.txt
            ├── http
            │   ├── CMakeLists.txt
            │   └── tests
            ├── inspect
            │   ├── CMakeLists.txt
            │   └── tests
            ├── output
            ├── poller
            ├── protobuf
            │   └── CMakeLists.txt
            ├── protorpc
            │   └── CMakeLists.txt
            └── tests
                └── CMakeLists.txt
    
    

    相关文章

      网友评论

          本文标题:shell命令学习:递归拷贝指定目录及子目录下的某一类型文件

          本文链接:https://www.haomeiwen.com/subject/cnaqkxtx.html