分享前言
在工作过程中经常处理一下文件或分析Log日志,时常会使用到shell脚本和shell命令去提高自己的工作效率。shell脚本以及常用的命令DIY性很强,能快速解决我们工作中遇到的小需求
这里演于一个案例跟大家分享下自己的实践(过程中使用shell命令的方式不是最佳的,自己在这方面确实没有深入的研究),主要是想跟大家分享解决之类问题的思路,提倡大家多使用shell脚本和基础的命令。(PS:建议大家深入学习与撑握shell常用命令,解决方案的思路很重要,但工具的用法不熟悉,整体效率上就大打拆扣了呀!比如我)
问题说明
** 找出两个Adroid项目的中重名的排版文件**
分而治之,问题拆解为两个
1、如何找出项目中所有的排版文件
2、如何对比文件名交集,即内容的交集
操作示例
找出文件
查找文件最想到的是find命令,文件的特征是.xml后缀 + 在res/layout目录了
那我们可以这样
# 在工程1目录下
find . -type f -iname *.xml | grep res/layout > project1.txt
awk -F/ '{print $NF}' project1.txt | sort >project1-xml.txt
# 在工程2目录下
find . -type f -iname *.xml | grep res/layout > project2.txt
awk -F/ '{print $NF}' project2.txt | sort >project2-xml.txt
查找交集
# -1 不输出文件1 特有的行
# -2 不输出文件2 特有的行
# -3 不输出两个文件共有的
# -12 两个文件的交集,共有的行
comm -12 project1-xml.txt project2-xml.txt