python实现条件拷贝工具(用于打patch)

为方便打patch,本文介绍了一个用Python编写的条件拷贝工具。该脚本能根据特定条件自动查找并拷贝文件,包括创建目标目录,尤其适用于内核文件的筛选,帮助生成patch文件。
摘要由CSDN通过智能技术生成

在打patch时经常需要提取出修改的文件或指定的文件,手动操作又太麻烦,于是通过python脚本实现按条件拷贝的功能,支持自动建立目录,支持多条件查询。

代码如下:

查询内核中包含特定宏或字符串的文件,将其自动生成到新目录,用于生成patch文件,因为不是所有的文件都需要拷贝。

#!/usr/bin/python
import os
#默认拷贝的目录
work_dir="./test"
#条件列表
cmd_array=[
    "grep \"NOS_CONTROL\" ./linux-4.9.77 -R|awk -F : '{print $1}'",
    "find linux-4.9.77/ -name \"bm_*\"",
    "find linux-4.9.77/ -name \"nos_*\"",
    "grep \"BEHAVIOR_MANAGER\" ./linux-4.9.77 -R|awk -F : '{print $1}'"
]

def copy_file(cmd):
    fd = os.popen(cmd)
    res = fd.read()
    res.split("\n")
    files = res.split("\n")

    for file_path in files:
        if len(file_path) < 2:
            continue;
        units = file_path.split("/")
        size = len(units);      
        file_name = units[size-1]
        index = file_path.index(file_name);
        file_dir = file_path[0:index]
        os.system("mkdir %s/%s -p"%(work_dir,file_dir));
        os.system("cp %s %s/%s"%(file_path,work_dir,file_dir));
        print "copying file %s to %s/%s ....................ok"%(file_path,work_dir,file_dir);
    fd.close();


if __name__ == "__main__":
    print 'begin copy file......'
    for cmd in cmd_array:
        print "exec :%s"%(cmd)
        copy_file(cmd);
输出结果
begin copy file......
exec :grep "NOS_CONTROL" ./linux-4.9.77 -R|awk -F : '{print $1}'
copying file ./linux-4.9.77/.config to ./test/./linux-4.9.77/ ....................ok
copying file ./linux-4.9.77/include/generated/autoconf.h to ./test/./linux-4.9.77/include/generated/ ....................ok
copying file ./linux-4.9.77/include/linux/skbuff.h to ./test/./linux-4.9.77/include/linux/ ....................ok
copying file ./linux-4.9.77/include/linux/skbuff.h to ./test/./linux-4.9.77/include/linux/ ....................ok
copying file ./linux-4.9.77/include/config/auto.conf to ./test/./linux-4.9.77/include/config/ ....................ok
copying file ./linux-4.9.77/include/config/tristate.conf to ./test/./linux-4.9.77/include/config/ ....................ok
copying file ./linux-4.9.77/include/net/netfilter/nf_conntrack.h to ./test/./linux-4.9.77/include/net/netfilter/ ....................ok
copying file ./linux-4.9.77/include/net/netfilter/nf_conntrack.h to ./test/./linux-4.9.77/include/net/netfilter/ ....................ok
copying file ./linux-4.9.77/include/net/netfilter/bm_online_ip.h to ./test/./linux-4.9.77/include/net/netfilter/ ....................ok
copying file ./linux-4.9.77/include/net/netfilter/bm_online_ip.h to ./test/./linux-4.9.77/include/net/netfilter/ ............
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值