您好,欢迎来到二三四教育网。
搜索
您的当前位置:首页shell命令学习:递归拷贝指定目录及子目录下的某一类型文件

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

来源:二三四教育网
命令
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

Copyright © 2019- how234.cn 版权所有 赣ICP备2023008801号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务