前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux-find 和 exec来批处理指定目录下所有头文件和Cpp文件去掉注释行(23)

Linux-find 和 exec来批处理指定目录下所有头文件和Cpp文件去掉注释行(23)

作者头像
诺谦
发布2022-05-10 14:04:27
1.6K0
发布2022-05-10 14:04:27
举报
文章被收录于专栏:Linux驱动Linux驱动

比如,我们只想处理login文件夹里的*.cpp和*.h(其它文件不动)

比如login/1.h如下所示:

比如login/1.cpp如下所示:

1.首先复制login文件夹到output下

代码语言:javascript
复制
mkdir output
cp login/ output/login -rf

2.然后删除output/login下的*.cpp和*.h(这样保留下的就是非CPP和头文件了)

代码语言:javascript
复制
find output/login -name '*.h' -type f -exec rm -rf {} \;   //删除*.h
find output/login -name '*.cpp' -type f -exec rm -rf {} \;

3.然后通过g++批处理来将注释去掉(如果是C语言则用gcc)

代码语言:javascript
复制
find login -name '*.h' -type f -exec g++ -E -fpreprocessed -P -dD  -c {} -o output/{} \;      //批处理*.h
find login -name '*.cpp' -type f -exec g++ -E -fpreprocessed -P -dD  -c {} -o output/{} \;    //批处理*.cpp
代码语言:javascript
复制
查看结果(不仅去掉注释,而且还自动排版了)
代码语言:javascript
复制
vi output/login/1.h:
代码语言:javascript
复制
vi output/login/1.cpp:

Linux命令 find 和 exec作用

find命令的一个选项,如下所示: (1)在当前目录下(包含子目录),查找所有txt文件并找出含有字符串"bin"的行 find ./ -name "*.txt" -exec grep "bin" {} \;

 (2)在当前目录下(包含子目录),查找10天前的log文文件 find ./ -name ".log" -mtime +10 -exec ls {} \;  ( {}和\;中间有空格,\和;中间没有空格,是连接的)

 (3)在当前目录下(包含子目录),删除10天前的log文文 find ./ -name ".log" -mtime +10 -exec rm {} \;    

 (4)在当前目录下(包含子目录),删除所有txt文件 find ./ -name "*.txt" -exec rm {} \;

代码语言:javascript
复制
find -name compile.sh -exec ls -l {} \;      //查找当前目录所有compile.sh内容,{}表示将找到的内容填过来
find -name compile.sh -exec chmod +x {} \;    //添加可执行属性
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-01-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Linux命令 find 和 exec作用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档