分享前言
在工作過程中經常處理一下文件或分析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