最近再看學長的code 我發現有點小問題 就是他的reposiroty最早的版本不是他一開始沒改的版本
喔 不 所以說我只好手動來找是哪些檔改過了 我當然知道diff是我最好的朋友
不過我不知道要怎麼比整個資料夾 我感覺bash script一定可以最這件事 但是現在離我上次寫bash script有點久耶
雖然書在旁邊 完全不沒有想去翻他的慾望 難道我真的要一個一個手動打diff比嗎
其實也可以啦 反正大不了一百多個 那我就不用寫這篇了....
想想python好像蠻強大的 用用看吧
以下就是簡單的python code
1 2 3 4 5 6 7 8 9 | #! /usr/bin/python
import os
import re
fileName = os.listdir("~/kernel_new/");
firDir = "~/kernel_new/"
secDir = "~/kernel/"
for oneName in fileName:
if re.match(".*cpp", oneName):
reslut = os.system("diff -c " + firDir + oneName + " " + secDir + oneName);
|
os就是一些平常在bash可以打得一些command 其實就是一些system programming會出現的東西
re就是reguler expression的縮寫 這就是正規表示法 就是有*,?,.,[]等等的符號的東西 他是用來更方便描述string特性
程式一開始先用os.listdir()取得新的資料夾裡面有什麼
再來設定兩個資料夾是哪兩個資料夾(這裡好像有點重複到)
接者將一個個檔名抓出來比較看看結尾是不是cpp 是的話再用os.system去call diff來作比較
這樣簡單的一個檔案就可以比較整個資料夾的某些檔案
在這裡我曾經犯了一個錯誤 就是我忘了reguler expression是什麼了 跟bash的wildcard混在一起了
我還以為可以打*cpp就得到所有cpp結尾的檔案 當然是不行的 因為在*前面一定要接是什麼東西要重複
還又就是re.match()是只要string前面match就可以了 不需要全部的string
沒有留言:
張貼留言