1. 找出所有.c文件
leon$ find ./ -maxdepth 3 -type f | grep "\.c"
./misc/nv_net_udp.c
./nv_comm_system.c
./util/nv_report_event.c
./util/nv_linklist_connect_info.c
./transport/net_udp.c
./transport/net_tcp.c
./transport/net_secure_tcp.c
./session/nv_client_session.c
./session/nv_client_accept.c
./session/nv_app_srv_session.c
./session/nv_tran_srv_session.c
./session/nv_session.c
./connect/nv_tran_srv_connect.c
./connect/nv_connect.c
./connect/nv_app_srv_connect.c
./connect/nv_picture_srv_connect.c
2. 需要被批量替换的内容
../../ 替换为 ./
3.查找 需要被替换的内容
leon$ for i in `find ./ -maxdepth 3 -type f | grep "\.c"`; do grep "\.\./\.\./" $i ; done
#include "../../network/misc/nv_net_udp.h"
#include "../../network/session/nv_app_srv_session.h"
#include "../../network/transport/net_udp.h"
#include "../../network/nv_comm_system.h"
#include "../../network/misc/nv_net_udp.h"
#include "../../network/connect/nv_app_srv_connect.h"
#include "../../network/session/nv_client_accept.h"
#include "../../network/util/nv_linklist_connect_info.h"
#include "../../network/session/nv_app_srv_session.h"
#include "../../network/transport/net_secure_tcp.h"
#include "../../network/util/nv_report_event.h"
#include "../../network/util/nv_linklist_connect_info.h"
#include "../../network/transport/net_tcp.h"
#include "../../network/transport/net_udp.h"
#include "../../network/transport/net_tcp.h"
#include "../../network/connect/nv_app_srv_connect.h"
#include "../../network/connect/nv_tran_srv_connect.h"
#include "../../network/connect/nv_picture_srv_connect.h"
#include "../../network/transport/net_tcp.h"
#include "../../network/transport/net_secure_tcp.h"
#include "../../network/connect/nv_app_srv_connect.h"
#include "../../network/connect/nv_tran_srv_connect.h"
#include "../../network/connect/nv_picture_srv_connect.h"
#include "../../network/session/nv_client_session.h"
#include "../../network/util/nv_linklist_connect_info.h"
#include "../../network/transport/net_tcp.h"
#include "../../network/nv_comm_system.h"
#include "../../network/session/nv_client_accept.h"
#include "../../network/session/nv_client_session.h"
#include "../../network/util/nv_linklist_connect_info.h"
#include "../../network/transport/net_tcp.h"
#include "../../network/nv_comm_system.h"
#include "../../network/session/nv_app_srv_session.h"
#include "../../network/connect/nv_app_srv_connect.h"
#include "../../network/util/nv_linklist_connect_info.h"
#include "../../network/transport/net_udp.h"
#include "../../network/misc/nv_net_udp.h"
#include "../../network/util/nv_report_event.h"
#include "../../network/nv_comm_system.h"
#include "../../network/session/nv_tran_srv_session.h"
#include "../../network/session/nv_client_session.h"
#include "../../network/connect/nv_app_srv_connect.h"
#include "../../network/connect/nv_tran_srv_connect.h"
#include "../../network/session/nv_client_accept.h"
#include "../../network/connect/nv_picture_srv_connect.h"
#include "../../network/transport/net_tcp.h"
#include "../../network/transport/net_secure_tcp.h"
#include "../../network/session/nv_app_srv_session.h"
#include "../../network/connect/nv_tran_srv_connect.h"
#include "../../network/session/nv_tran_srv_session.h"
#include "../../network/transport/net_tcp.h"
#include "../../network/util/nv_linklist_connect_info.h"
#include "../../network/nv_comm_system.h"
#include "../../network/transport/net_tcp.h"
#include "../../network/connect/nv_app_srv_connect.h"
#include "../../network/session/nv_app_srv_session.h"
#include "../../network/connect/nv_picture_srv_connect.h"
#include "../../network/transport/net_secure_tcp.h"
#include "../../network/transport/net_tcp.h"
#include "../../network/session/nv_app_srv_session.h"
4. 替换
for i in `find ./ -maxdepth 3 -type f | grep "\.c"`; do sed -i 's/\.\.\/\.\.\//\.\//g' $i ; done
5. 查看替换后的内容
leon$ for i in `find ./ -maxdepth 3 -type f | grep "\.c"`; do grep "\.\/" $i ; done
#include "./network/misc/nv_net_udp.h"
#include "./network/session/nv_app_srv_session.h"
#include "./network/transport/net_udp.h"
#include "./network/nv_comm_system.h"
#include "./network/misc/nv_net_udp.h"
#include "./network/connect/nv_app_srv_connect.h"
#include "./network/session/nv_client_accept.h"
#include "./network/util/nv_linklist_connect_info.h"
#include "./network/session/nv_app_srv_session.h"
#include "./network/transport/net_secure_tcp.h"
#include "./network/util/nv_report_event.h"
#include "./network/util/nv_linklist_connect_info.h"
#include "./network/transport/net_tcp.h"
#include "./network/transport/net_udp.h"
#include "./network/transport/net_tcp.h"
#include "./network/connect/nv_app_srv_connect.h"
#include "./network/connect/nv_tran_srv_connect.h"
#include "./network/connect/nv_picture_srv_connect.h"
#include "./network/transport/net_tcp.h"
#include "./network/transport/net_secure_tcp.h"
#include "./network/connect/nv_app_srv_connect.h"
#include "./network/connect/nv_tran_srv_connect.h"
#include "./network/connect/nv_picture_srv_connect.h"
#include "./network/session/nv_client_session.h"
#include "./network/util/nv_linklist_connect_info.h"
#include "./network/transport/net_tcp.h"
#include "./network/nv_comm_system.h"
#include "./network/session/nv_client_accept.h"
#include "./network/session/nv_client_session.h"
#include "./network/util/nv_linklist_connect_info.h"
#include "./network/transport/net_tcp.h"
#include "./network/nv_comm_system.h"
#include "./network/session/nv_app_srv_session.h"
#include "./network/connect/nv_app_srv_connect.h"
#include "./network/util/nv_linklist_connect_info.h"
#include "./network/transport/net_udp.h"
#include "./network/misc/nv_net_udp.h"
#include "./network/util/nv_report_event.h"
#include "./network/nv_comm_system.h"
#include "./network/session/nv_tran_srv_session.h"
#include "./network/session/nv_client_session.h"
#include "./network/connect/nv_app_srv_connect.h"
#include "./network/connect/nv_tran_srv_connect.h"
#include "./network/session/nv_client_accept.h"
#include "./network/connect/nv_picture_srv_connect.h"
#include "./network/transport/net_tcp.h"
#include "./network/transport/net_secure_tcp.h"
#include "./network/session/nv_app_srv_session.h"
#include "./network/connect/nv_tran_srv_connect.h"
#include "./network/session/nv_tran_srv_session.h"
#include "./network/transport/net_tcp.h"
#include "./network/util/nv_linklist_connect_info.h"
#include "./network/nv_comm_system.h"
#include "./network/transport/net_tcp.h"
#include "./network/connect/nv_app_srv_connect.h"
#include "./network/session/nv_app_srv_session.h"
#include "./network/connect/nv_picture_srv_connect.h"
#include "./network/transport/net_secure_tcp.h"
#include "./network/transport/net_tcp.h"
#include "./network/session/nv_app_srv_session.h"
6. 删除匹配行
for i in `find ./ -maxdepth 3 -type f | grep "\.c"`; do sed -i '/\.\.\/\.\.\//d' $i ; done
7.拓展
将 含有字符串"/mnt/nfs/zhuqh/goke/nvc-hi3518-kernel/linux-3.4.y" 替换为 "/opt/hi3518/Hi3518E_SDK_V1.0.3.0/osdrv/opensource/kernel/linux-3.4.y
"
for i in `grep "/mnt/nfs/zhuqh/goke/nvc-hi3518-kernel/linux-3.4.y" * -nR | cut -d ':' -f1`; do sed -i "s#/mnt/nfs/zhuqh/goke/nvc-hi3518-kernel/linux-3.4.y#/opt/hi3518/Hi3518E_SDK_V1.0.3.0/osdrv/opensource/kernel/linux-3.4.y#g" $i ; done
注意:这里使用 # 来代替 / 进行sed语法转义。